我的主要布局中有一个部分,如下所示。我开始使用 memcached 并想知道这部分是否可以以某种方式缓存,因为 current_user 调用会在每次页面加载时对数据库产生影响,并且由于其背后的插件(authlogic)的性质,它实际上会更新用户记录(即易腐烂的 token )。
无论如何通过缓存或任何其他方式解决这个问题?
<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>
最佳答案
你在使用易腐 token 吗?这个SO question表示您可以删除该列,或设置 disable_perishable_token_maintenance = true
以防止每页加载时更新数据库命中。
至于缓存——一般来说,您可以为每个人缓存非个性化数据,并仅为那个人缓存个性化数据。所以是的,您可以缓存该 block ,但 key 需要在其中包含 user_id。
关于ruby-on-rails - 使用 memcached 进行缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3379396/