如何在多个请求中缓存Rails中的查询

uma*_*mar 5 activerecord caching ruby-on-rails

我想缓存查询结果,以便"为多个请求"提取相同的结果,直到我使缓存无效.例如,我想渲染一个侧边栏,其中包含书籍的所有页面,就像书的索引一样.因为我想在书的每一页上显示它,我必须在每个请求上加载它.我可以使用动作缓存来缓存渲染的侧边栏索引,但我还想实际缓存用于生成侧边栏html的查询结果.Rails提供了一种方法吗?我该怎么做?

Joh*_*ley 3

您可以使用ActiveSupport 的缓存存储来缓存查询结果,如果您提供自己的实现,则可以通过内存存储(例如 memcached)或数据库存储来支持。请注意,如果缓存在多个 Ruby 进程之间共享,您将需要使用数据库存储(如果您部署到 Mongrel Cluster 或 Phusion Passenger,就会出现这种情况)。