0

在第 14.9.3 节中。在"HTTP 1/1. Specification"中,描述了 Cache-Control: max-age 标头字段的行为。它特别指出:

“当缓存响应中存在 max-age cache-control 指令时,如果响应的当前年龄大于对该资源的新请求时给定的年龄值(以秒为单位),则响应是陈旧的”

如何测量响应的“当前年龄”(如规范中使用的)?它是否测量为当前时间与:

  1. Date 的值:响应的标头
  2. Last-Modified: 响应头的值
  3. 响应放入缓存的时间(可能与 a 和 b 不同)

?

4

2 回答 2

1

请参阅http://greenbytes.de/tech/webdav/draft-ietf-httpbis-p6-cache-24.html#header.age并检查修订是否使其更清晰。

于 2013-09-27T06:42:44.637 回答
0

“缓存控制:当我们输出 HTML 时,max-age 也很有用。想象一下由 PHP 生成的页面不会经常更改,每天一次甚至更长。但是浏览器仍然必须在每次页面查看时下载 HTML。我们可以改进它通过在 PHP 中发送 max-age 值。 header('Cache-Control: max-age=28800');

这样,我们将理想的缓存寿命设置为 8 小时。现在,如果有人在 8 小时内第二次点击链接,他会立即获得该页面。

Max-age 还有助于提高代理服务器的效率。我们可以通过将代理服务器添加到 Web 前端来轻松组织透明的服务器端缓存。

请注意,如果页面的内容经常更改且相关,则情况并非易事。例如,在用户登录后缓存带有登录表单的页面可能会遇到困难,该表单在用户登录后会转换为带有“Hello username”的某个框,或者如果有用户评论,则发布评论的用户将看不到它。因为我们不能要求浏览器销毁缓存条目,它仍然会从缓存中获取旧页面。该解决方案可以使用 Javascript 生成登录框(需要启用 Javascript)。如果我们在用户登录后设置cookie,我们可以在客户端检查它并为登录用户生成合适的内容。这样,从服务器端看,内容将是相同的,并且可以被缓存。”

详细信息可以在这里找到[http://www.webscalingblog.com/performance/caching-http-headers-cache-control-max-age.html]

于 2013-09-27T05:15:56.343 回答