随机缓存过期


13

我一直在尝试使用随机缓存的到期时间,以避免单个请求强制一次更新多个事件的情况。例如,一个网页可能包含五个不同的组件。如果每个都设置为在30分钟内超时,则用户每30分钟将有很长的等待时间。因此,您可以将它们全部设置为15到45分钟之间的随机时间,以使得对于给定的页面加载,最多只有一个组件可以重新加载。

我正在尝试找到有关此主题的任何研究或指南,例如最佳方差参数。我确实记得看到过一篇有关Google(?)如何使用这种技术的文章,但是找不到它,而且关于该主题的文章似乎也很少。


您可以将这个词改成一个问题吗?目前尚不清楚您期望得到什么答案。
Derek 2012年

好的,完成了。
mahemoff 2012年

Answers:


4

一些文件:


3
感谢您提供这些链接,但没有一个提到随机性。
mahemoff 2012年

2
我知道这个问题有多大年纪,但是从EstarOnline有限公司马修·尼尔那样只是这个(PDF):estaronline.com/images/assetimages/...
尼克·贝德福德

@NickBedford这是我一直在寻找的答案。您的评论应该是被接受的答案。
WhiteHotLoveTiger

0

回到我自己的问题上,这里的主要问题是如何避免所有事物总是同时失效。如果允许这种情况发生,则系统将在重新填充缓存时放慢速度并变得拥塞。

在大多数情况下,实际上这并不是问题。随着时间的流逝,所有组件的过期时间都趋于漂移。如果有多个组件都在同一时间重新构建,这是一种代码味道,因为它们可能应该作为单个组件一起缓存(例如,如果页面的唯一页眉,正文和页脚分别缓存,那么您可以只是缓存页面本身)。

当然,有时候需要一次缓存很多东西,例如,在启动系统后,如果我们清除了整个缓存或旋转了缓存键,则需要一次缓存。在这种情况下,情况并没有那么糟糕,因为组件会迅速填满,并且到期后会逐渐分开。

在一定程度上这是一个问题,有两种解决方案:

  • 只需选择一个范围内的随机缓存有效期限而不是固定期限,例如15至90分钟而不是60分钟的随机整数即可。
  • 允许陈旧的响应。仅仅因为一个缓存项已经过期,并不意味着它仍然存在就不能使用。根据业务需求,如果在到期后获取原始版本时出现性能问题,可以使用它。在HTTP中,这是“必须重新验证”的目的(如果为true,则意味着 到期后使用缓存的版本)。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.