кэширование с memcached - PullRequest
       14

кэширование с memcached

3 голосов
/ 31 июля 2010

У меня есть раздел в моем основном макете, как показано ниже. Я начинаю использовать 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>

1 Ответ

1 голос
/ 01 августа 2010

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

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

...