【发布时间】:2010-01-01 13:57:38
【问题描述】:
如果我的操作具有查询字符串参数,如何使用 Rails 缓存我的 REST 控制器?
Example: GET /products/all.xml?max_price=200
谢谢!
【问题讨论】:
标签: ruby-on-rails caching controller
如果我的操作具有查询字符串参数,如何使用 Rails 缓存我的 REST 控制器?
Example: GET /products/all.xml?max_price=200
谢谢!
【问题讨论】:
标签: ruby-on-rails caching controller
如果你想缓存一个动作,基于所有的查询参数(或者说几乎所有的参数),你可以这样做:
caches_action :my_action, :cache_path => Proc.new { |c| c.params }
或者,您可能只需要一些仅用于 Analytics 的参数(但与您正在获取的记录无关):
caches_action :my_action, :cache_path => Proc.new { |c| c.params.delete_if { |k,v| k.starts_with?('utm_') } }
【讨论】:
要将请求 url 用作缓存键,我会这样做:
caches_action :index, :cache_path => Proc.new {|c| c.request.url }
【讨论】:
在这种情况下,您应该使用片段缓存:
在您的控制器中:
cache(params[:max_price], :expires_in => 10.minute) do
# get the result
end
【讨论】: