Подтвердить что ты не робот

Кеширование действий Rails с параметрами запроса

Как я могу кэшировать мой REST-контроллер с Rails, где мои действия имеют параметры строки запроса?

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

спасибо!

4b9b3361

Ответ 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