【问题标题】:How to cache an HTTP response indefinitely如何无限期缓存 HTTP 响应
【发布时间】:2012-08-01 00:08:04
【问题描述】:

如何发送任何客户端将永久缓存(或直到其缓存被清除)的 HTTP 响应,这样当浏览器需要该资源时,它不会发出 HTTP 请求,而是从本地文件系统检索 HTTP 响应?

使用说明:这适用于 Ajax 应用程序中的版本化客户端代码。一切都通过不可缓存的 example.com/front.htm 访问,它只包含一个链接到 example.com/currentversion/bootstrap.js 的脚本标签,该标签被无限期地缓存。因为不可缓存的 HTML 文件决定了当前的版本,所以客户端不需要更新脚本。

【问题讨论】:

  • 我认为资源会自动缓存,除非您将 nocache php 标头添加到您的响应中。关于.js文件,这个也是一样的,都是自动缓存的,需要改名字才能重新下载。

标签: javascript ajax http caching


【解决方案1】:

缓存到 2038 年。由于32-bit Unix Epoch bug,您不能再进一步(可靠)。使用这个标题:

Expires: Sun, 17 Jan 2038 19:14:07 GMT

【讨论】:

    【解决方案2】:

    根据 RFC,“要将响应标记为‘永不过期’,源服务器会在响应发送后大约一年发送一个过期日期。HTTP/1.1 服务器不应发送超过一年的过期日期未来。”

    http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.21

    我不知道一年限制背后的原因是什么,所以就这样吧。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-21
      • 2011-03-25
      • 1970-01-01
      • 2012-04-10
      • 2016-01-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多