我想在名为How key-based cache expiration works的37signals博客上讨论帖子。我是Django开发人员,而不是RoR,所以这里是Ross Poulton的Django“翻译”:Key-based cache expiration with Django。
正如你所看到的,主要思想如下:我们有“俄罗斯娃娃”结构,其中一个对象包含其他几个层次。
class A:
timestamp updated_at;
class B:
A parent;
timestamp updated_at;
class C:
B parent;
timestamp updated_at;
类A的对象的视图(例如,HTML)与所有相关对象一起缓存。当C类更新时,我们需要:
在此之后访问A类视图时,我们需要:
所以,如果我理解这个策略,我们需要为每个对象做DB-2的6个查询:一个将获得时间戳,第二个 - 对象,在缓存中过时。
相反,如果我们将重置所有数据,我们只需要进行3次查询:
据我所知,使用更多数据执行3个查询而不是使用更少的6个查询更好。那么这个策略有效吗?
当然,我们也可以在缓存中存储时间戳,但在这种情况下,我们将面临时间戳无效的问题。因此,对于需要避免失效的策略的数据无效是没有意义的。
如果我对理解该算法的范围或工作原理有误,请纠正我。