2014-10-28 2 views
1

, 이제 나는이 같은 뷰에서 객체 기반 조각 캐싱을 사용하는 가정 해 봅시다 : 레일 4 조각 캐싱 :보기 변경? 레일 4 프로젝트에서

<% cache(current_user) do %> 
    <%= current_user.name %> 
<% end %> 

다음 current_user가 업데이트 될 때마다 current_user 캐시 키 변경. 이는 캐시 무효화 이유가 객체 자체가 변경된 경우 캐시를 무효화하는 데 유용합니다. 그러나보기가 바뀌면 어떨까요? 예를 들어 대문자 사용자 이름 ( current_user은 동일하게 유지되는 반면)을 표시하도록보기 코드를 변경하면 어떻게됩니까?

<% cache(current_user) do %> 
    <%= current_user.name.capitalize %> 
<% end %> 

개체 기반 조각 캐싱은보기를 변경해야한다고해도 캐시를 무효화하지 않습니다. 이는 다음과 같이 뷰 버전을 기반으로 버전 화 된 캐시 키를 정의해야한다는 의미입니까?

# some_helper.rb 
def user_name_cache_key(user) 
    [user, "v2"] # un-capitalized name was v1 
end 

# some_view.html.erb 
<% cache(user_name_cache_key(current_user)) do %> 
    <%= current_user.name.capitalize %> 
<% end %> 

아마도 이것은 분명하지만 레일스 캐싱을 설명하는 문서 또는 블로그 게시물에는 언급되지 않았습니다. 그들은 모두 객체 업데이트 된 무효화 문제에 초점을 맞추고 뷰 업데이트 된 무효화 문제에 대한 기술을 무시하는 것처럼 보입니다.

감사합니다.

답변