アクションにクエリ文字列パラメーターがある場合、RESTコントローラーをRailsでキャッシュするにはどうすればよいですか?
Example: GET /products/all.xml?max_price=200
どうも!
すべてのクエリパラメータに基づいて(またはほぼすべてのパラメータに基づいて)アクションをキャッシュする場合は、次の操作を実行できます。
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