ruby-on-rails - Rails 3.1通配符使缓存与查询字符串一起作用

标签 ruby-on-rails ruby-on-rails-3 caching fragment-caching

我有一个页面,index操作在其中显示帖子列表,以及自定义排序列,分页等。尽管我可以使用

cache(:direction => params[:direction], :sort => params[:sort], :page => params[:page]) do

我无法通过一次调用expire_action一次使所有这些过期(这是一个问题)。我知道expire_action有一个正则表达式选项,但这很麻烦(使用正则表达式来搜索使用哈希创建的键),并且我正在使用无法使用的memcached。

如何通过单次调用expire_action终止操作的所有缓存成员?如果这不可能,那么您是否可以建议其他缓存选项?

最佳答案

我建议您浏览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_versioncache_version=的详细信息可能会有所不同,具体取决于您如何处理应用程序中的其他数据。也许还有比这更优雅的解决方案,但这就是我想到的。

关于ruby-on-rails - Rails 3.1通配符使缓存与查询字符串一起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7478788/

相关文章:

ruby-on-rails - 将searchkick与pundit结合使用:policyscope错误

ruby-on-rails - 设计:只允许用户重置密码

ruby-on-rails-3 - 在 activeadmin 上使用 batch_action 批量编辑记录(带有 activeadmin 的轨道)

java - 如何在 JAVA 中开发/组装 SOAP 缓存

ruby-on-rails - 如何让我的数据库查询更有效率?

ruby-on-rails - 你如何在 Rails 中管理 Postgresql 数据库连接?

ruby-on-rails - Rails 资源文件夹路径有哪些不同用途?

ruby-on-rails - 为什么 `button tag` 不会显示对话框进行确认?

windows - 从操作系统/应用程序分析 CPU 缓存/内存?

java - Hibernate 的一级缓存不适用于 boolean 类型?