Rails 3缓存问题

时间:2012-03-07 09:38:49

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

假设我想使用dalli存储来缓存(片段)视图。这是否意味着做这样的事情也会使用memcache进行可能的DB缓存?

Rails.cache.fetch("something") { smth }

另外,如果我这样做:

Author.all

Rails控制台会告诉我它正在查询数据库,但是如果我再次运行Author.all,它会告诉我从缓存中检索结果。我何时需要明确使用Rails.cache,何时应该依赖ActiveRecord进行缓存?

1 个答案:

答案 0 :(得分:1)

获取和读取操作从中获取项目 当前配置的缓存存储, 例如来自文件系统的缓存 store是:file_store,或来自Memcached 如果商店是:mem_cache_store,则为服务器。 因此,如果您想使用Memcached 片段缓存,你必须配置 cache_store相应:

ActionController::Base.cache_store = :mem_cache_store, "cache-1.example.com"

建议使用fragment caching 如果有一个涉及很多的大而复杂的观点 很少或很慢变化的查询。 Fragement 缓存完全是一个很好的权衡 静态页面(快速但固定)和动态页面 (慢,但可变)。如果你需要缓存某个部分 页面而不是整个页面,片段缓存是方式 正如瑞安贝茨在Railscast about fragment caching中所说的那样。

页面和动作缓存更好,它们很棒 为了加快页面的性能,但有问题 如果它包含用户特定的内容。在这种情况下 可以使用dynamic page caching。堆栈溢出 使用类似的技术。

SQL Caching仅在持续时间内持续存在 一个动作。