Кеширование действий 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
Ответ 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