我正在开发一种搜索功能,在输入内容时进行 ajax 调用以获取结果。我想在 memory_cache 中使用搜索关键字缓存搜索操作,所以我这样做:
# caches_action with GET parameters
caches_action :search_posts, :cache_path => Proc.new { |c| c.params }
我的问题是我如何也可以使带有参数的操作过期?还有其他方法可以使我的功能正常工作吗?
我正在开发一种搜索功能,在输入内容时进行 ajax 调用以获取结果。我想在 memory_cache 中使用搜索关键字缓存搜索操作,所以我这样做:
# caches_action with GET parameters
caches_action :search_posts, :cache_path => Proc.new { |c| c.params }
我的问题是我如何也可以使带有参数的操作过期?还有其他方法可以使我的功能正常工作吗?
您有几个选项可以使这种缓存过期。
第一个(更简单的一个)是将 :expires_in 选项添加到您的 caches_action 语句 - 例如:
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 请求此页面。
您可以在官方文档中阅读更多内容。