何时应发生缓存失效



有一个数据库记录。此记录有一个网页。此网页已缓存。在某些时候,记录可能会更新,并且不再需要(网页的)缓存。

系统应该立即告诉缓存不再需要它,还是应该在请求缓存网页时(并且仅当)发生这种情况,以防止可能不必要的删除?

这取决于您的具体要求。

在我看来,您有 3 个选择:

  1. 更改时 - 编辑条目时,还要删除现有的缓存信息(还要确保根据请求重新创建)
  2. 定期 - 有一个运行一次 X 次的 cron 作业,并重新执行整个缓存
  3. 基于百分比(不确定如何调用它) - 当请求条目时,执行以下操作:

(基本上下面的代码意味着在 1000 个请求中,请求页面的缓存被清除)

if (rand(1, 1000) == 666) {
    /** clear the cache for current requested page */
}
/** handle request */

根据您的流量和缓存的信息量(可能还有其他因素),任何内容都很有用。

当您拥有巨大的缓存时,#3效果很好,而#2则非常适合经常更新的较小缓存。

#1是理想的,但有一个非常大的缺陷 - 有时您可能无法跟踪某些更改。例如,您无法真正判断何时更改模板文件以重新缓存它。

由您

决定您的确切需求,您获得/期望的流量,您将拥有的缓存量,并且有很多工具可以执行这些基准测试(例如Apache基准测试)。

PS:您很可能需要这些的组合

例:

在具有经常更改的巨大缓存的应用程序中,我会 #1 + #3 ,同时根据应用程序收到的流量和基准测试结果选择完美百分比。

而且,为了以积极的态度结束答案,这里有莱昂·班布里克(Leon Bambrick)的一句话

计算机科学中有 2 个难题:缓存失效、命名事物和 off-by-1 错误。

相关内容

  • 没有找到相关文章

最新更新