Set caches_action ,: expire_in=> dinamicamente
-
15-11-2019 - |
Domanda
Ogni esempio di caches_action
che ho visto sembra:
caches_action, :expires_in => 5.minutes
.
Ma vorrei impostare expires_in
in base al tempo di scadenza di un oggetto utilizzato nell'azione.C'è un modo per fare riferimento a quell'oggetto quando si imposta expires_in
poiché l'oggetto in questione è basato su params
inviato all'azione?
Ho provato a usare
caches_action, :expires_in => Object.find(params[:id])
.
Ma ahimè non mi permetterà di fare riferimento ai parametri lì.Suggerimenti Benvenuti!
Soluzione
Looks like you need to use a Proc which can get passed the params of the controller. Here is an example
caches_action :show, cache_path: Proc.new {|controller_instance| "some_cache_path_that_is_uniq/#{controller_instance.params[:id]}"}
Altri suggerimenti
The main point of action caching is to prevent actions being run every time a new request is coming in. Unless defined explicitly params are not taken into consideration.
If you want to cache based on instances I would suggest doing Conditional Gets.