Ensemble caches_action, :expires_in => dynamiquement
-
15-11-2019 - |
Question
Un exemple de chaque caches_action
J'ai vu ressemble:
caches_action, :expires_in => 5.minutes
mais je tiens à définir expires_in
basé sur le délai d'expiration d'un objet utilisé dans l'action.Est-il un moyen de faire référence à l'objet lors de la configuration de expires_in
puisque l'objet en question est basé sur params
envoyé à l'action?
J'ai essayé d'utiliser
caches_action, :expires_in => Object.find(params[:id])
mais, hélas, il ne me laisse pas de référence params là.Des Suggestions sont les bienvenues!
La solution
On dirait que vous devez utiliser un Proc qui peut passer à travers les paramètres du contrôleur.Voici un exemple
caches_action :show, cache_path: Proc.new {|controller_instance| "some_cache_path_that_is_uniq/#{controller_instance.params[:id]}"}
Autres conseils
Le point principal de l'action la mise en cache est d'éviter des actions en cours d'exécution chaque fois qu'une nouvelle demande est à venir dans le.Sauf si explicitement défini les paramètres ne sont pas pris en considération.
Si vous voulez cache basé sur les cas je vous le conseille Conditionnel Obtient.