Rails 为什么要嵌套 Cache

tumayun · 2012年10月22日 · 最后由 Rei 回复于 2012年10月23日 · 3742 次阅读

今天在看 @xdite 的文章Cache Digests 最大化緩存策略的时候, 有个疑问,Russian Doll cache strategy 的嵌套 Cache 模式有什么好处? 为什么要嵌套 Cache,这样不会太费 memcache 了么?

Russian Doll cache strategy

Russian Doll cache strategy

没人看。。。

因为第二层的缓存是用来共享的

因为一个大的 cache 如果 expire,或者不能命中,还有机会用小的 cache 去命中它,这样就有尽可能更高的 cache 命中率

因为大粒度的 cache 提升的性能多,但是容易失效。小粒度的 cache 灵活,不容易失效,效果不显著。

这样嵌套是可以获得两者的优点,就是苦了 memcache,但是 memcache 就是来干这个的啊。。浪费就浪费吧

另外,memcached 还有一个特性,可以设置最大占用内存,当到达这个数值时,memcached 会自动将最长时间没有用的缓存清除

@hooopo 你说的这个大粒度的 cache 容易失效,这个是正常过期还是不能命中? 还有,为什么会有未过期不能命中的问题?是 memcache 自身的问题还是什么? 这方面关注的不多,谢谢解惑,呵呵

#6 楼 @tumayun 未过期不能命中?没理解你说的过期和命中分别代表什么

@hooopo 你说的大粒度的 cache 容易失效,这个失效是指正常过期还是说没有命中? 未过期不能命中,就是说 cache 没有 expired,但是却没有命中

大块 cache 包含内容多,内容修改了,会 expire cache。

#8 楼 @tumayun 大粒度 cache,只要有一项内容变了就整个过期,其他没变化的内容都要重新载入渲染。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号