2010-07-31 97 views
3

我在我的主布局中有一个部分,如下所示。我开始使用memcached,并想知道这部分是否可以以某种方式缓存,因为current_user调用每次页面加载时都会触发数据库,​​并且由于它后面的插件(authlogic)的性质,它实际上更新了用户记录(即易腐标记)。与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

谢谢。看来我确实使用pt进行重置/帐户验证,有没有一种方法可以将它仅用于这些请求?或者如果我删除这个列可以我还有其他方式的重置功能? – badnaam 2010-07-31 20:55:34

+0

设置disable_perishable_token_maintenance = true,然后在重置和验证时重置它 – 2010-07-31 22:29:40