Кеширование действий Rails с параметрами запроса
Как я могу кэшировать мой REST-контроллер с Rails, где мои действия имеют параметры строки запроса?
Example: GET /products/all.xml?max_price=200
спасибо!
Ответы
Ответ 1
Если вы хотите кэшировать действие, основанное на всех параметрах запроса (или сказать почти на всех), вы можете сделать:
caches_action :my_action, :cache_path => Proc.new { |c| c.params }
Или, может быть, вам нужны все, кроме некоторых параметров, которые вы просто используете для Google Analytics (но которые не имеют отношения к записям, которые вы извлекаете):
caches_action :my_action, :cache_path => Proc.new { |c| c.params.delete_if { |k,v| k.starts_with?('utm_') } }
Ответ 2
Чтобы использовать URL-адрес запроса в качестве ключа кеша, я делаю что-то вроде этого:
caches_action :index, :cache_path => Proc.new {|c| c.request.url }
Ответ 3
В этом случае вы должны использовать кеширование фрагментов:
в вашем контроллере:
cache(params[:max_price], :expires_in => 10.minute) do
# get the result
end