Setze caches_action, : expires_in => dynamisch
-
15-11-2019 - |
Frage
Jedes Beispiel von caches_action
Ich habe gesehen, wie es aussieht:
caches_action, :expires_in => 5.minutes
aber ich würde gerne einstellen expires_in
basierend auf der Ablaufzeit eines in der Aktion verwendeten Objekts.Gibt es eine Möglichkeit, beim Festlegen auf dieses Objekt zu verweisen expires_in
da das betreffende Objekt basiert auf params
zur Aktion geschickt?
Ich habe versucht zu benutzen
caches_action, :expires_in => Object.find(params[:id])
aber leider lässt es mich dort nicht auf Parameter verweisen.Vorschläge willkommen!
Lösung
Sieht so aus, als müssten Sie einen Prozess verwenden, der die Parameter des Controllers übergeben kann.Hier ist ein Beispiel
caches_action :show, cache_path: Proc.new {|controller_instance| "some_cache_path_that_is_uniq/#{controller_instance.params[:id]}"}
Andere Tipps
Der Hauptpunkt des Aktions-Cachings besteht darin, zu verhindern, dass bei jedem Eingang einer neuen Anforderung Aktionen ausgeführt werden.Sofern nicht explizit definiert, werden Parameter nicht berücksichtigt.
Wenn Sie basierend auf Instanzen zwischenspeichern möchten, würde ich Folgendes vorschlagen Bedingte Gets.