Warm tip: This article is reproduced from serverfault.com, please click

caching-适用于不同类型资源的理想HTTP缓存控制标头

(caching - Ideal HTTP cache control headers for different types of resources)

发布于 2010-06-04 01:23:17

我想找到一组最小的标头集,这些标头可以与“所有”缓存和浏览器一起使用(也在使用HTTPS时使用!)

在我的网站上,我将拥有三种资源:

(1)永久可缓存(公开/对所有用户均等)

示例:0A470E87CC58EE133616F402B5DDFE1C.cache.html(由GWT自动生成

  • 这些文件在更改内容时(基于MD5)会自动分配一个新名称。

  • 即使使用HTTPS,也应该尽可能地对其进行缓存(因此,我认为应该设置Cache-Control: public,尤其是对于Firefox?)

  • 如果内容已更改,他们不应该要求客户端往返服务器进行验证。

(2)偶尔更改(公开/对所有用户均等)

示例:index.html,mymodule.nocache.js

  • 部署新版本的网站时,这些文件将更改其内容而不会更改URL。

  • 它们可以被缓存,但是可能每次都需要往返来重新验证。

(3)每个请求的个人(私有/用户特定)

示例:JSON响应

  • 在任何情况下,都不应将这些资源未加密地缓存到磁盘中。(除非我可能会缓存一些特定的请求。)

我对每种类型可能使用的标头有一个大致的了解,但是总会缺少一些东西。

Questioner
Chris Lercher
Viewed
0
Gumbo 2011-04-05 22:42:02

我可能会使用以下设置:

  1. Cache-Control: max-age=31556926–表示可以被任何高速缓存所高速缓存。缓存的表示将被认为是1年的新鲜:

    为了将响应标记为“永不过期”,源服务器会从发送响应之日起大约一年后发送一个 Expires日期。HTTP / 1.1服务器不应发送超过一年的过期日期。

  2. Cache-Control: no-cache–任何缓存都允许缓存制图表达。但是缓存必须在释放缓存副本之前将请求提交给原始服务器以进行验证。
  3. Cache-Control: no-store –缓存在任何情况下均不得缓存表示。

有关更多信息,请参见Mark Nottingham的缓存教程