Если у вас есть очень простое приложение Rails, Я бы рекомендовал использовать кеширование фрагментов, поскольку он намного проще в использовании и обслуживании по сравнению с кешированием действий/страниц. Если вы решите использовать кэширование фрагментов, вы можете добавить что-то вроде следующего в шаблон индекса:
<% @models.each do |model| %>
<% cache ["v1", model] do %>
<%= render model %>
<% end %>
<% end %>
Это будет оказывать частичную _model.html.erb
и кэшировать результат. Подробнее о механизмах кэширования в Rails я предлагаю прочитать Rails Guides.
Более агрессивной стратегией кэширования было бы кэширование всех моделей на одной странице. Это может быть сделано путем установки текущей страницы в переменный экземпляре в контроллере:
def index
@page = params[:page]
@models = ...
end
Теперь в шаблоне вы можете включить страницу в ключе композитного кэша:
<% cache ["v1", cache_key_for(@models), @page] do %>
<% @models.each do |model| %>
<%= render model %>
<% end %>
<% end %>
<% end %>
cache_key_for
является вспомогательным который вычисляет ключ кеша для набора моделей. Его можно определить как:
def cache_key_for(models)
"#{models.count}-{models.map(&:updated_at).max.utc.to_s(:number)}"
end