对于 Internet缓存,更新启发式是将文档保留一段与对象的已知生命周期成比例的时间。如果我们遵循典型的60%规则,我们会收到如下响应:
HTTP / 1.0 200 OK
日期:2009年6月23日星期二09:23:24
服务器:Apache / 1.3.0(Unix)
最后修改时间:2009年6月8日星期一09:23:24
内容类型:text / html
我们何时应该缓存此对象?
答案 0 :(得分:1)
从技术上讲,您可以永久缓存它,它没有设置到期日。用户代理在想要显示缓存内容时应该执行的操作是发出另一个带有If-Modified-Since标头的请求,该请求允许服务器返回一个不错的短304 Not-Modified响应。
另一种查看问题的方法是“我不想在每个时间重新请求,触发这些重新请求有什么好的启发式方法?”。一个建议是基于Fibonacci序列的频率,以便最近更新的文档重新请求,但随着它们的老化,重新请求的频率变得不那么频繁。
HTTP / 1.1规范将此打开,Section 3.2.2 "Heuristic Calculations"可以说
由于原始服务器并非总是如此 提供明确的到期时间, HTTP缓存通常分配启发式 到期时间,采用算法 使用其他标头值(例如 最后修改时间)估计一个 合理的到期时间。该 HTTP / 1.1规范没有 提供特定的算法,但确实如此 对他们施加最严重的限制 结果。自启发式到期 时代可能会损害语义 透明度,他们应该使用 谨慎,我们鼓励起源 服务器提供明确的过期时间 时间尽可能多。