ruby轨道 – 俄罗斯娃娃片段缓存与自动过期键 – 性能优点和缺点
问题是基于2篇文章:
– Basecamp Next 由DHH从37信号 – Advanced Caching in Rails by Adam Hawkins 我对使用俄罗斯娃娃缓存的性能影响有些困惑,具体来说: >当使用自动到期键时,似乎每个请求都将导致访问数据库以获取对象时间戳 – 我是否缺少某些东西? (我明白,在最好的情况下,你只能为层次结构中的顶级键执行,但是…) 对我来说,似乎俄罗斯娃娃缓存只有当你有一个深层层次的嵌套对象时才有意义(在basecamp你有项目 – > todos列表 – > todo – >项目列表).然而,如果你有一个浅层次结构,最好是自己做无效. 任何反馈将不胜感激! 解决方法
>顶层确实需要打数据库.您可以通过将时间戳记存储在一个单独的缓存条目中,通过模型和id键入来避免这种情况.对于第1条(Manuel F.Lara)的评论者之一也提出了这样一个建议:“有没有其他缓存像项目/ 15次,你总是拥有项目列表的最后一个时间戳?
>我认为你对嵌套的“最低”水平是正确的.您可能需要进行一些测试来查看DB访问的相对性能,而不是渲染小部分. >另一个好点.根据rails文档,如果您传递一个符号:触摸它将更新该属性除了updated_at – 也许有一种方法可以跳过更改Post#updated_at,只更新一个列,如comments_updated_at.那么你可以使用后者进行缓存.但是,如果您尝试避免使用数据库访问,则必须为此时间戳记存储另一个缓存密钥(如上述#1中所示). 我想你必须决定这一切是否值得你的麻烦.这两篇文章展示了简单,有创意的教学原理.在具有复杂关联的应用程序中,“代数”缓存方法可能更易于管理. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |