2010-07-31 1 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, чтобы предотвратить попадание обновлений-db на страницу.

Что касается кэширования - в общем случае вы можете кэшировать неличные данные для всех и персонализированные данные только для этого человека. Итак, да, вы можете кэшировать этот блок, но для этого в нем должен быть user_id.

+0

Спасибо. Кажется, я использую pt для сброса/проверки счетов, есть ли способ использовать его только для этих запросов? или если я удалю этот столбец, я могу еще сбросить функциональность другим способом? – badnaam

+0

Установите disable_perishable_token_maintenance = true, а затем сбросьте его при сбросе и проверке –