2010-07-31 74 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