在阅读Rails的缓存选项时,我刚看了Scaling Rails episode on memcached,他们主张使用记录的updated_at字段作为缓存键的一部分。这应该确保当缓存块包含记录的内容时,每当该记录更新时,它将使该缓存块无效。
我理解这个原则,但是如果我知道记录的当前updated_at时间,那是不是暗示我最近已经打了数据库?这有什么帮助?
这似乎表明它只适用于您在整个会话或构建视图中对同一记录进行多次访问的情况,每个视图都有不同的查询,并且只有一些是缓存值得的。这是意图吗?
答案 0 :(得分:1)
我们将此技术与belongs_to …, :touch => true
一起使用。
这可确保如果任何相关项目受到污染,则主设备也会受到污染。我们为产品做这个 - <价格类型关系。一个简单的主键查找确定我们是否需要加载许多其他记录(和做数学)或只是使用缓存。
这不是灵丹妙药,但它可以工作,时间戳可以一直推送到HTTP缓存控制标头,从而节省了整个请求。