Sofern Sie eine sehr einfache Rails-Anwendung haben, Ich würde empfehlen, das Fragment-Caching zu verwenden, da es im Vergleich zur Aktion/Seiten-Caching viel einfacher zu verwenden und zu warten ist. Wenn Sie verwenden Fragment Caching entscheiden, könnten Sie so etwas wie die folgenden zu Ihrem Index-Template hinzu:
<% @models.each do |model| %>
<% cache ["v1", model] do %>
<%= render model %>
<% end %>
<% end %>
Dies wird die partielle _model.html.erb
machen und das Ergebnis zwischenspeichern. Für Details zu den Cache-Mechanismen in Rails empfehle ich, Rails Guides zu lesen.
Eine aggressivere Cache-Strategie wäre es, alle Modelle auf einer einzigen Seite zwischenzuspeichern. Das könnte durch Einstellen der aktuellen Seite zu einer Instanzvariablen in der Steuerung erfolgen:
def index
@page = params[:page]
@models = ...
end
Jetzt in Ihrer Vorlage Sie die Seite im Verbund Cache Schlüssel können sein:
<% cache ["v1", cache_key_for(@models), @page] do %>
<% @models.each do |model| %>
<%= render model %>
<% end %>
<% end %>
<% end %>
cache_key_for
ist ein Helfer Das berechnet einen Cache-Schlüssel für eine Reihe von Modellen. Es könnte wie folgt definiert werden:
def cache_key_for(models)
"#{models.count}-{models.map(&:updated_at).max.utc.to_s(:number)}"
end