我最近遇到过短语"多层缓存"与多层体系结构有关,但没有对这样的缓存是什么(或如何使用它)进行有意义的解释。
该短语的相关在线搜索也不会发现任何事情。我的解释将是一个服务于某些n层Web应用程序的所有层的缓存。也许是一个分布式缓存,每层都有一个缓存节点。
以前有没有遇到这个词?我对吗?离开?
答案 0 :(得分:2)
我知道这已经过时了,但我认为自己写了几个多层缓存,或者至少有几个迭代后,我会在这里投入两分钱。
考虑一下;每个应用程序都有不同的层,每层都可以缓存不同形式的信息。每个缓存项通常会因两个原因中的一个到期,一个时间段已过期,或者依赖关系已更新。
对于这个解释,让我们假设我们有三层:
每个图层都依赖于它的父级,我们将使用某种形式的依赖项赋值来定义它们。因此,块依赖于依赖于模板的对象。如果更改了Object,则Block中的任何依赖项都将被清除并刷新;如果一个模板被更改,任何对象依赖项将被清除,反过来删除任何块,并且所有将被刷新。
有几个好处,长的到期时间很长,因为依赖关系将确保在更新父级时更新下游资源,因此您不会获得过时的缓存资源。单独的块缓存是一个很大的帮助,因为没有整页缓存(需要AJAX或Edge Side Includes来避免缓存动态内容),块将是最终用户浏览器/界面的最接近的元素,并且可以节省大量的预处理周期。
像这样的多层缓存中的复杂性虽然它通常不能依赖纯粹的基于DB的外键清除,即除非每个层与其父层相对于1:1(即块将只依靠单个对象,它依赖于单个模板)。您必须以编程方式解决依赖资源的删除问题。您可以通过数据库中的存储过程执行此操作,也可以在应用程序层中执行此操作,如果您希望动态使用显式规则。
希望能帮助某人:)
编辑:我应该补充一点,这些层中的任何一个都可以在缩放环境中进行群集,分片或其他方式,因此该模型适用于小型和大型环境。
答案 1 :(得分:1)
在使用EhCache几周之后,仍然不太清楚术语“多层”缓存的含义。我将跟进我解释的含义是隐含的含义;如果在任何时候有人出现并且不知道,请随时回答,我将删除这个。
多层缓存似乎是一个复制和/或分布式缓存,它位于 n-tier 体系结构中的1层以上。它允许多个层上的组件访问相同的缓存。在EhCache中,使用复制或分布式缓存架构并简单地引用来自多个层的相同缓存服务器就可以实现这一目标。