2010-07-31 1 views
3

다음과 같이 기본 레이아웃에 섹션이 있습니다. 나는 memcached를 사용하기 시작하고이 부분이 어떻게 캐시 될 수 있는지 궁금해한다. 왜냐하면 current_user 호출이 모든 페이지로드에 대한 데이터베이스에 히트를 치고 그 뒤에 플러그인 (authlogic) thats의 특성상 실제로 사용자 레코드를 업데이트하기 때문이다. 부패하기 쉬운 토큰).memcached로 캐싱

캐싱이나 다른 방법을 통해이 문제가 있습니까?

<ul class="header_links"> 
       <% unless current_user %> 
        <li><%= link_to "Sign Up", new_user_path, :id => 'main_sign_up_link', :class=> 'special-text'%></li> 
        <li><%= link_to "Login", login_path, :id => 'main_login_link' %></li> 
       <% else %> 
        <li><%= link_to "New Vote", new_user_vote_topic_path(current_user), :id => 'main_new_vote_link', :class=> 'special-text' %></li> 
        <li><%= link_to current_user.username.titleize, current_user, :id => 'main_profile_link' %></li> 
        <li><%= link_to "Logout", logout_path %></li> 
       <% end %> 
       </ul> 

답변

1

부패하기 쉬운 토큰을 사용하고 있습니까? 이 SO question에는 해당 열을 제거하거나 disable_perishable_token_maintenance = true을 설정하여 페이지 당 update-db 적중을 방지 할 수 있다고합니다.

캐싱은 일반적으로 모든 사람의 비 개인 데이터를 캐싱 할 수 있으며 해당 사용자 만 개인 데이터를 캐싱 할 수 있습니다. 그래서 예, 당신은 그 블록을 캐시 할 수 있지만, 키는 user_id를 가져야합니다.

+0

감사합니다. 그것은 리셋/계정 유효성 검사를 위해 태평양 표준시를 사용하는 것, 내가 그 요청에만 사용할 수있는 방법이 있습니까? 또는이 열을 제거해도 기능을 재설정 할 수 있습니까? – badnaam

+0

disable_perishable_token_maintenance = true로 설정 한 다음 재설정 및 유효성 검사를 수행 할 때 다시 설정하십시오. –