나는 캐싱의 초보자이므로 분명 할 수도 있습니다.손님 전용으로 캐시 된 페이지를 보내는 레일
사용자가 로그인하지 않은 :
나는 그런 일을 달성하고 싶다. 그는 캐시 된 페이지를 가져옵니다.
사용자가 로그인되어 있습니다. 그는 캐시되지 않은 일반 페이지를 가져옵니다. 그 (의사)와 같은
뭔가 :
caches_action :index, :if => !current_user
불행하게도이 나던 작품은,하지만 난 당신이 아이디어를 갈 것 같아요.
나는 캐싱의 초보자이므로 분명 할 수도 있습니다.손님 전용으로 캐시 된 페이지를 보내는 레일
사용자가 로그인하지 않은 :
나는 그런 일을 달성하고 싶다. 그는 캐시 된 페이지를 가져옵니다.
사용자가 로그인되어 있습니다. 그는 캐시되지 않은 일반 페이지를 가져옵니다. 그 (의사)와 같은
뭔가 :
caches_action :index, :if => !current_user
불행하게도이 나던 작품은,하지만 난 당신이 아이디어를 갈 것 같아요.
솔루션 :
caches_action :index, :unless => :current_user
사용자 세션에 대해 Cache Sweeper을 볼 수 있습니다. 그래서 기본적으로 UserSession이 생성되고 캐시 페이지가 만료 될 때 설정할 수 있습니다. 스위퍼에 연결된 Rails 문서는 훌륭합니다.
페이지 캐싱은 실제로 웹 서버가 직접 선택하는 .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 %>
페이지 캐싱이 아닙니다. 액션 캐싱입니다. 어쨌든 조건부로 캐시하는 흥미로운 접근법을 제공합니다. +1 –