假设我想使用dalli存储来缓存(视图的片段)。这是否意味着这样做也会将memcache用于可能的DB缓存?
Rails.cache.fetch("something") { smth }另外,如果我这样做:
Author.allRails控制台将显示它正在查询数据库,但是如果我再次运行Author.all,它将显示结果是从缓存中检索的。什么时候应该显式地使用Rails.cache,什么时候应该依靠ActiveRecord来进行缓存?
发布于 2012-03-07 18:27:51
获取和读取操作从当前配置的缓存存储中获取项,例如,如果缓存存储是:file_store,则从文件系统获取项;如果缓存存储是:mem_cache_store,则从Memcached服务器获取项。因此,如果您希望使用Memcached进行片段缓存,则必须相应地配置cache_store:
ActionController::Base.cache_store = :mem_cache_store, "cache-1.example.com"如果有涉及许多查询的大型复杂视图,而这些查询很少更改或更改很慢,则推荐使用fragment caching。帧缓存是完全静态页面(快速,但固定)和动态页面(缓慢,但可变)之间的一种很好的权衡。如果您需要缓存页面的某一部分,而不是整个页面,就像Ryan Bates在他的Railscast about fragment caching中所说的那样,片段缓存是可行的。
页面和动作缓存甚至更好,它们对于加速页面的性能非常有用,但如果它包含用户特定的内容,就会出现问题。在这种情况下,可以使用dynamic page caching。Stackoverflow使用类似的技术。
SQL Caching仅在单个操作的持续时间内持续。
https://stackoverflow.com/questions/9598935
复制相似问题