кеширование с помощью memcached

У меня есть раздел в моем основном макете, как показано ниже. Я начинаю использовать memcached и задаюсь вопросом, можно ли как-то кэшировать эту часть, потому что вызов current_user обращается к базе данных при каждой загрузке страницы, и по природе плагина (authlogic), который стоит за ним, он фактически обновляет запись пользователя (т.е. скоропортящийся жетон).

Есть ли способ обойти это с помощью кэширования или каких-либо других средств?

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

person badnaam    schedule 31.07.2010    source источник


Ответы (1)


Вы используете скоропортящийся токен? Этот SO вопрос говорит, что вы можете либо удалить этот столбец, либо установить disable_perishable_token_maintenance = true чтобы предотвратить попадание update-db на загрузку страницы.

Что касается кэширования — в целом вы можете кэшировать неперсонализированные данные для всех и персонализированные данные только для этого человека. Так что да, вы можете кэшировать этот блок, но в ключе должен быть user_id.

person Jesse Wolgamott    schedule 31.07.2010
comment
Спасибо. Кажется, я использую pt для сброса/проверки учетной записи, есть ли способ использовать его только для этих запросов? или если я удалю этот столбец, могу ли я по-прежнему использовать функцию сброса каким-либо другим способом? - person badnaam; 01.08.2010
comment
Установите для параметра disable_perishable_token_maintenance = true, а затем сбросьте его при выполнении сбросов и проверок. - person Jesse Wolgamott; 01.08.2010