我想找到一个最小的标头集,它可以与"all"缓存和浏览器一起使用(当使用 HTTPS 时!)
在我的网站上,我将有三种资源:
(1)永远可缓存(所有用户的公共/相等)
示例:0A470E87CC58EE133616F402B5DDFE1C.cache.html(由GWT自动生成)
-
这些文件在更改内容时会自动分配新名称(基于MD5) .
-
他们应该尽可能地缓存,即使使用HTTPS(所以我假设,我应该设置
Cache-Control: public
,特别是对于Firefox?) -
如果内容发生变化,他们不应要求客户端往返服务器进行验证 .
(2)偶尔更改(所有用户公开/平等)
示例:index.html,mymodule.nocache.js
-
当部署新版本的站点时,这些文件会更改其内容而不更改URL .
-
它们可以被缓存,但可能需要每次都要重新验证往返 .
(3)每个请求的个人(私人/用户特定)
示例:JSON响应
- 在任何情况下都不应将这些资源缓存到未加密的磁盘 . (除非我有一些可以缓存的特定请求 . )
我有一个大概的想法,我可能会为每种类型使用哪些 Headers ,但总会有一些我可能会遗漏的东西 .
2 回答
我可能会使用这些设置:
Cache-Control: max-age=31556926
- 任何缓存都可以缓存表示 . 缓存的表示将被视为新鲜1年:Cache-Control: no-cache
- 允许任何缓存缓存表示 . 但是缓存必须在发布缓存副本之前将请求提交给源服务器进行验证 .Cache-Control: no-store
- 缓存不得在任何条件下缓存表示 .有关详细信息,请参见Mark Nottingham’s Caching Tutorial .
案例一和二实际上是相同的情况 . 您应该设置
Cache-Control: public
,然后生成一个URL,其中包含站点的内部版本号/版本,以便您拥有可能永久持续的不可变资源 . 您还希望将来设置Expires
标头一年或更长时间,以便客户端不需要发出新鲜度检查 .对于案例3,您可以获得以下所有灵活性: