我有一个页面,其中index
操作显示帖子列表,自定义排序列,分页等。虽然我可以使用
cache(:direction => params[:direction], :sort => params[:sort], :page => params[:page]) do
我无法使用expire_action
的一次调用一次性过期所有这些(这是一个问题)。我知道expire_action
有一个正则表达式选项,但这很麻烦(使用正则表达式搜索用哈希创建的密钥),我使用的memcached不起作用。
如何通过一次调用expire_action
来使操作的所有缓存成员到期?如果无法做到这一点,您可以推荐其他任何缓存选项吗?
答案 0 :(得分:1)
我建议查看this post on caching in Rails,这是一篇非常全面的文章,介绍了各种策略,可能会提供您在这种情况下所寻找的结果。
虽然他没有在帖子中提到它,但是在参数列表中添加某种缓存清除参数(如缓存版本ID)可能会为您提供一种以更通用的方式使缓存过期的方法。例如:
cache(:version => Posts.cache_version, :direction => params[:direction], :sort => params[:sort], :page => params[:page]) do
# Later on to bust the cache
Posts.cache_version = 2
您希望如何实施cache_version
和cache_version=
的详细信息可能会有所不同,具体取决于您在应用程序中处理其他数据的方式。可能还有比这更优雅的解决方案,但这是我想到的。