假设我想使用dalli存储来缓存(片段)视图。这是否意味着做这样的事情也会使用memcache进行可能的DB缓存?
Rails.cache.fetch("something") { smth }
另外,如果我这样做:
Author.all
Rails控制台会告诉我它正在查询数据库,但是如果我再次运行Author.all
,它会告诉我从缓存中检索结果。我何时需要明确使用Rails.cache
,何时应该依赖ActiveRecord进行缓存?
答案 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仅在持续时间内持续存在 一个动作。