有一个数据库记录。此记录有一个网页。此网页已缓存。在某些时候,记录可能会更新并且不再需要(网页的)缓存。
系统是否应立即告知缓存不再需要缓存,或者是否应该在请求缓存网页时(并且仅当)请求这样做,以防止可能不必要的删除?
答案 0 :(得分:1)
这取决于您的具体要求。
我看到它的方式,你有3个选择:
(基本下面代码表示1000次请求中的一次,清除所请求页面的缓存)
if (rand(1, 1000) == 666) {
/** clear the cache for current requested page */
}
/** handle request */
根据您的流量和缓存的信息量(可能还有其他因素),任何内容都非常有用。
当你有一个巨大的缓存时, #3
很有用,而#2
很适合经常更新的较小缓存。
#1
是理想的,但有一个很大的缺陷 - 有时你可能无法跟踪某些变化。例如,您无法确定何时更改模板文件以重新缓存它。
由您来决定您的确切需求,您获得/期望的流量,您将拥有的缓存量,还有相当多的工具来执行这些基准测试(例如Apache Benchmark )。
PS:您很可能需要这些
的组合示例:强>
在具有经常更改的巨大缓存的应用程序上,我会#1
+ #3
,同时根据应用程序收到的流量和基准测试结果选择完美的百分比。
而且,要以积极的方式结束答案,这里引用的是Leon Bambrick
。计算机科学存在两个难题:缓存失效,命名事物和一分之一错误。