对于Internet缓存,更新启发是保持文档的时间与对象的已知生存期成正比。如果我们遵循一个典型的60%规则,并且收到如下答复:
HTTP/1.0 200 OK
日期:2009年6月23日,星期二09: 23 :24
服务器: Apache/1.3.0 (Unix)
最后修改: Mon,2009年6月8日09:23:24内容-Type: text/html
直到什么时候我们应该缓存这个对象?
发布于 2009-10-21 08:08:53
从技术上讲,您可以永远缓存它,它没有固定的过期。当用户代理想要显示缓存的内容时,它应该做的是发出另一个带有如果-修改-自头的请求,这允许服务器返回一个漂亮的、短的304未修改响应。
另一种看待你的问题的方法是:“我不想每次都重新请求它,什么是触发这些重新请求的好的启发?”一个建议是基于斐波纳契序列的频率,因此最近更新的文档重新请求,但随着它们的老化,重新请求的频率降低。
HTTP/1.1规范留下了这个空缺,第3.2.2节“启发式计算”有这样的说法
由于源服务器并不总是提供显式过期时间,HTTP缓存通常会分配启发式过期时间,使用使用其他标头值(例如最后修改的时间)的算法来估计合理的过期时间。HTTP/1.1规范没有提供特定的算法,但对其结果施加了最坏的限制。由于启发式过期时间可能会影响语义透明性,因此应该谨慎使用,我们鼓励源服务器尽可能提供显式过期时间。
https://stackoverflow.com/questions/1599354
复制相似问题