Caching 基于密钥的缓存过期
我想讨论一下37signals博客上名为。我是Django开发者,不是RoR,所以这里是Ross Poulton的Django“翻译”: 如你们所见,主要思想如下:我们有“俄罗斯玩偶”结构,其中一个对象包含多个层次的其他对象Caching 基于密钥的缓存过期,caching,Caching,我想讨论一下37signals博客上名为。我是Django开发者,不是RoR,所以这里是Ross Poulton的Django“翻译”: 如你们所见,主要思想如下:我们有“俄罗斯玩偶”结构,其中一个对象包含多个层次的其他对象 class A: timestamp updated_at; class B: A parent; timestamp updated_at; class C: B parent; timestamp updated_at; 类A对象的视图(例如H
class A:
timestamp updated_at;
class B:
A parent;
timestamp updated_at;
class C:
B parent;
timestamp updated_at;
类A对象的视图(例如HTML)与所有相关对象一起缓存。更新C类时,我们需要:
如果我对该算法的作用域或工作原理理解错误,请纠正我。我最近在Java中构建了类似的东西。在您的示例中,A、B和C是缓存键还是缓存对象?@arootbeer,它是类。这些类的所有实例都是可缓存的。如果我正确理解了这个问题,您实际上是在问“当缓存未命中时,此策略是否会使加载条目的成本更高?”这是一个有效的问题,但我认为它忽略了缓存的要点:如果您做得正确,您的未命中非常罕见,因此更昂贵的加载过程会被执行许多缓存查找的成本所抵消。如果我的理解是正确的,请告诉我,我会给出一个更全面的答案。@arootbeer,我认为,这种缓存策略在一种情况下是有意义的,但在另一种情况下是没有意义的。例如,如果我们有一个简单的对象,其中包含另一个,那么它似乎没有意义。所以我的问题是什么时候。在我看来,只有当我们有“俄罗斯玩偶”结构,每个层次上都有许多层次和对象,并且有多个缓存片段表示一个父对象或子对象时,才会出现这种情况。我试着去理解,这种策略对我有什么帮助。此外,DB涉及到每个请求都让我感到困惑。我现在明白了。我将不得不做更多的挖掘,看看它到底在做什么,但无论如何,当我试图学习RoR时,它应该是一个有用的练习。