Cache di azioni Rails con parametri di QueryString

Come posso memorizzare nella cache il mio controller REST con Rails dove le mie azioni hanno parametri di stringa di query?

Example: GET /products/all.xml?max_price=200 

Grazie!

Se vuoi mettere in cache un’azione, in base a tutti i parametri della query (o pronuncia su quasi tutti), puoi fare:

 caches_action :my_action, :cache_path => Proc.new { |c| c.params } 

Oppure, forse vuoi tutti tranne alcuni parametri che utilizzi solo per Analytics (ma che non hanno alcun impatto sui record che stai recuperando):

 caches_action :my_action, :cache_path => Proc.new { |c| c.params.delete_if { |k,v| k.starts_with?('utm_') } } 

Per utilizzare l’url della richiesta come chiave di cache, faccio qualcosa del genere:

 caches_action :index, :cache_path => Proc.new {|c| c.request.url } 

In questo caso dovresti usare la cache dei frammenti:

nel tuo controller:

 cache(params[:max_price], :expires_in => 10.minute) do # get the result end