Кэширование в Rails (2.1) без слишком большой логики в представлении - PullRequest
1 голос
/ 23 ноября 2011

Я недавно попал в кеширование страниц / фрагментов в Rails (спасибо Railscast # 90 ). Но когда я сам попробовал, это сделало мой взгляд намного хуже.

Примеры, которые я нашел в интернете, в большинстве случаев просто кэшировали простой запрос сущностей (в основном что-то вроде "most_recent_products"

Но когда я начинаю кешировать профиль пользователя с последними статьями пользователя (простой пример блога), он очень быстро запутывается.

Пример

show.html.erb:

# some code
<% cache "user#{params[:id]}" do %>
<div id="user">
  <h2>Product.find(params[:id])</h2>
  <ul>
  <% for article in Articles.find_by_user(Product.find(params[:id])) %>
    <li><%= link_to h(article), article %></li>
  <% end %>
  </ul>
</div>
<% end %>
# some code

Если я не хочу выполнять один запрос к базе данных (при кэшировании), это путь (все запросы должны идти внутри блока кэша).

Я понимаю, что вы можете упростить это с помощью частичных операций или сохранить его в переменной, но, тем не менее, как только задействовано более одной сущности, вам необходимо выполнить много логики в представлении.

Нет ли лучшего способа загрузить все нужные вам переменные (@user, @articles) куда-нибудь еще, но заполнять их только при необходимости (а я не люблю проверять кэш в контроллере)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...