rails3缓存:expire_action,其参数由caches_action(GET)缓存

时间:2012-08-19 17:12:30

标签: ruby-on-rails-3 action-caching

我正在开发一个搜索功能,在输入内容时会调用ajax来获取结果。我想用memory_cache中的搜索关键字缓存搜索操作,所以我这样做:

# caches_action with GET parameters

caches_action :search_posts, :cache_path => Proc.new { |c| c.params }

我的问题是如何使用参数使操作过期?有没有其他方法可以使我的功能有效?

1 个答案:

答案 0 :(得分:1)

您有几种方法可以使此类缓存失效。

第一个(更简单的一个)是在你的caches_action语句中添加:expires_in选项 - 例如:

caches_action :search_posts, :cache_path => Proc.new { |c| c.params }, :expires_in => 16.hours.to_i

这会在一段时间后自动使此密钥失效。

或者您可以使用控制器中的expire_action方法使此缓存失效。应该是这样的:

expire_action :action => 'posts', :q => 'query'

鉴于您已请求此页面使用一个参数q = query。

您可以阅读更多in the official documentation