2011-10-28 3 views
0

나는 캐싱의 초보자이므로 분명 할 수도 있습니다.손님 전용으로 캐시 된 페이지를 보내는 레일

  1. 사용자가 로그인하지 않은 :

    나는 그런 일을 달성하고 싶다. 그는 캐시 된 페이지를 가져옵니다.

  2. 사용자가 로그인되어 있습니다. 그는 캐시되지 않은 일반 페이지를 가져옵니다. 그 (의사)와 같은

뭔가 :

caches_action :index, :if => !current_user

불행하게도이 나던 작품은,하지만 난 당신이 아이디어를 갈 것 같아요.

답변

0

솔루션 :

caches_action :index, :unless => :current_user

0

사용자 세션에 대해 Cache Sweeper을 볼 수 있습니다. 그래서 기본적으로 UserSession이 생성되고 캐시 페이지가 만료 될 때 설정할 수 있습니다. 스위퍼에 연결된 Rails 문서는 훌륭합니다.

3

페이지 캐싱은 실제로 웹 서버가 직접 선택하는 .html 파일을 저장하므로 레일즈를 완전히 바이 패스하면이 방법을 사용할 수 없습니다.

더 나은 방법은 페이지 내용을 조건부로 캐시하는 것입니다. 나는 보통보기 cache 방법 감싸는 cache_if 방법을 구현하고 조건을 수행 할 수 있습니다 사용하는 경우

def cache_if(condition, *options, &block) 
    if (!condition) 
    yield 
    else 
    cache(*options, &block) 
    end 
end 

그것은 다음과 같을 것이다 :

<% cache_if(!current_user, '#content') %> 
... 
<% end %> 
+0

페이지 캐싱이 아닙니다. 액션 캐싱입니다. 어쨌든 조건부로 캐시하는 흥미로운 접근법을 제공합니다. +1 –

관련 문제