Действие направляющих, кэширующееся с querystring параметрами

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

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

Спасибо!

40
задан xpepermint 1 January 2010 в 13:57
поделиться

3 ответа

, Если вы хотите припрятать действие про запас, на основе всех параметров вопроса (или сказать относительно почти всех их), вы можете сделать:

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

Или, возможно, вы хотите все кроме некоторого params, который вы просто используете для Аналитики (но у которых нет влияния на отчеты, вы привлекательны):

caches_action :my_action, :cache_path => Proc.new { |c| c.params.delete_if { |k,v| k.starts_with?('utm_') } }
88
ответ дан 27 November 2019 в 01:18
поделиться

В этом случае вы должны использовать кэширование фрагментов:

в вашем контроллере:

cache(params[:max_price], :expires_in => 10.minute) do
  # get the result
end
4
ответ дан 27 November 2019 в 01:18
поделиться

Чтобы использовать URL-адрес запроса в качестве ключа кеша, я делаю что-то вроде этого:

caches_action :index, :cache_path => Proc.new {|c| c.request.url }
10
ответ дан 27 November 2019 в 01:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: