Как я могу кэшировать свой контроллер REST с направляющими, где мои действия имеют параметры строки запроса?
Example: GET /products/all.xml?max_price=200
Спасибо!
, Если вы хотите припрятать действие про запас, на основе всех параметров вопроса (или сказать относительно почти всех их), вы можете сделать:
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_') } }
В этом случае вы должны использовать кэширование фрагментов:
в вашем контроллере:
cache(params[:max_price], :expires_in => 10.minute) do
# get the result
end
Чтобы использовать URL-адрес запроса в качестве ключа кеша, я делаю что-то вроде этого:
caches_action :index, :cache_path => Proc.new {|c| c.request.url }