Я недавно попал в кеширование страниц / фрагментов в 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) куда-нибудь еще, но заполнять их только при необходимости (а я не люблю проверять кэш в контроллере)