假设我们有一个向用户呈现连续数据的应用程序。例如博客——我们提供博客条目列表,这个列表分为页面——所以我们最终得到 /page1、/page2 等。
第一页显然是最常被请求的,但页数越高,请求的频率就越低。
如果我们为我们的应用程序实现缓存,我们有两个选择:
每个新条目后更新每个页面的缓存
当请求页面时,PHP 正在寻找缓存版本;如果存在,则返回,否则创建缓存,并将到期日期设置为,比如说,一个小时
第一个解决方案对我来说似乎真的很浪费资源。第二个创造了危险场景的可能性:
如果用户请求页面 x 然后 (x+1),其中页面 x 被缓存而页面 (x+1) 没有被缓存,会发生什么?如果页面 x 的缓存已过时,则在页面 (x+1) 上,用户将看到相同的内容。或者更糟糕的是,如果用户从 x 页转到 (x-1) 页怎么办?他会错过一些条目!
如何实现缓存来避免这个问题?