2010-07-31 6 views
3

J'ai une section dans ma disposition principale comme suit. Je commence à utiliser memcached et je me demande si cette partie peut être mise en cache parce que l'appel current_user fait un hit à la base de données pour chaque chargement de page et par nature du plugin (authlogic) qui le met à jour. le jeton périssable).Mise en mémoire cache avec memcached

Y a-t-il un moyen de contourner cela par la mise en cache ou par d'autres moyens?

<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> 

Répondre

1

Utilisez-vous le jeton périssable? Cette SO question indique que vous pouvez supprimer cette colonne ou définir disable_perishable_token_maintenance = true pour empêcher la mise à jour-db hit par chargement de page. En ce qui concerne la mise en cache, vous pouvez généralement mettre en cache des données non personnalisées pour tout le monde et des données personnalisées uniquement pour cette personne. Donc oui, vous pouvez mettre en cache ce bloc, mais la clé devrait avoir l'user_id dedans.

+0

Merci. Il semble que j'utilise pt pour les validations/validations de compte, est-il possible de l'utiliser uniquement pour ces demandes? ou si je supprime cette colonne, puis-je avoir une autre fonctionnalité de réinitialisation? – badnaam

+0

Définissez disable_perishable_token_maintenance = true, puis réinitialisez-le lorsque vous effectuez des réinitialisations et des validations –

Questions connexes