Ruby on rails 使用querystring参数的Rails操作缓存

Ruby on rails 使用querystring参数的Rails操作缓存,ruby-on-rails,caching,controller,Ruby On Rails,Caching,Controller,在我的操作具有查询字符串参数的情况下,如何使用Rails缓存REST控制器 Example: GET /products/all.xml?max_price=200 谢谢 在这种情况下,您应该使用片段缓存: 在控制器中: cache(params[:max_price], :expires_in => 10.minute) do # get the result end 如果要基于所有查询参数(或几乎所有查询参数)缓存操作,可以执行以下操作: caches_action :my_a

在我的操作具有查询字符串参数的情况下,如何使用Rails缓存REST控制器

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

谢谢

在这种情况下,您应该使用片段缓存:

在控制器中:

cache(params[:max_price], :expires_in => 10.minute) do
  # get the result
end

如果要基于所有查询参数(或几乎所有查询参数)缓存操作,可以执行以下操作:

caches_action :my_action, :cache_path => Proc.new { |c| c.params }
或者,您可能需要除某些参数外的所有参数,这些参数仅用于分析(但与您获取的记录无关):


要将请求url用作缓存密钥,我需要执行以下操作:

caches_action :index, :cache_path => Proc.new {|c| c.request.url }

假设该操作有用户名john,并且根据传入的随机get参数缓存了该操作的几个版本。有没有办法使用户名为john的操作的缓存和所有带有params的缓存版本无效?示例/john/picture?dimension=50和/john/picture?dimension=100是否可以清除johns picture的所有版本?@Marc:是的,请参阅名称空间以了解想法,希望这对某人有所帮助:在Rails 3中-在终止具有自定义参数、定义格式的操作缓存时,您已设置默认URL以确保尾部斜杠,expire_action(:action=>:my_action,:param_1=>“val”,:format=>:json),rails未使用正确的缓存键。它不会清除缓存键/my_action.json/?param_1=val,而是会清除/my_action.json/?param_1=val.json,因为它推断扩展的方式。那么,在使用缓存路径时,如何使操作过期?
caches_action :index, :cache_path => Proc.new {|c| c.request.url }