Cache-Control
Cache-Control
Cache-Control
通用头字段用于指定在两个,请求和响应的缓存机制的指令。缓存指令是单向的,这意味着请求中的给定指令并不意味着将在响应中给出相同的指令。
Header type | General header |
---|---|
Forbidden header name | no |
CORS-safelisted response-header | yes |
语法
这些指令不区分大小写,并且有一个可选参数,可以同时使用令牌和带引号的字符串语法。多个指令用逗号分隔。
缓存请求指令
Cache-Control
客户端可以在 HTTP 请求中使用的标准指令。
Cache-Control: max-age=<seconds>
Cache-Control: max-stale[=<seconds>]
Cache-Control: min-fresh=<seconds>
Cache-Control: no-cache
Cache-Control: no-store
Cache-Control: no-transform
Cache-Control: only-if-cached
缓存响应指令
Cache-Control
服务器可以在 HTTP 响应中使用的标准指令。
Cache-Control: must-revalidate
Cache-Control: no-cache
Cache-Control: no-store
Cache-Control: no-transform
Cache-Control: public
Cache-Control: private
Cache-Control: proxy-revalidate
Cache-Control: max-age=<seconds>
Cache-Control: s-maxage=<seconds>
扩展Cache-Control指令
扩展Cache-Control
指令不是核心 HTTP 缓存标准文档的一部分。请务必检查兼容性表格以获取支持。
Cache-Control: immutable
Cache-Control: stale-while-revalidate=<seconds>
Cache-Control: stale-if-error=<seconds>
指令
可缓存
public
指示响应可能被任何缓存缓存。
Expiration
max-age=<seconds>指定资源被视为新鲜的最长时间。相反Expires,这个指令是相对于请求的时间而言的。
重新验证和重新加载
must-revalidate
缓存必须在使用前验证陈旧资源的状态,不应使用过期资源。与之proxy-revalidate
相同must-revalidate
,但它仅适用于共享缓存(例如,代理)并被私有缓存忽略。
其他
no-store
缓存不应该存储有关客户端请求或服务器响应的任何内容。
例子
防止缓存
要关闭缓存,您可以发送以下响应标题。另外,请参阅Expires
和Pragma
标题。
Cache-Control: no-cache, no-store, must-revalidate
缓存静态资产
对于应用程序中不会更改的文件,通常可以通过在下面发送响应标题来添加主动缓存。这包括由应用程序提供的静态文件,例如图像,CSS 文件和 JavaScript 文件。另外,请参阅Expires
标题。
Cache-Control: public, max-age=31536000
规范
Specification | Title |
---|---|
RFC 7234 | Hypertext Transfer Protocol (HTTP/1.1): Caching |
RFC 5861 | HTTP Cache-Control Extensions for Stale Content |
draft-mcmanus-immutable-00 | HTTP Immutable Responses |
浏览器兼容性
Feature | Chrome | Edge | Firefox | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|---|
Basic Support | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) |
immutable | No | 15 | 49.0 | No | No | No1 |
stale-while-revalidate | No2 | No | No3 | No | No | No |
stale-if-error | No2 | No | No3 | No | No | No |
Feature | Android | Chrome for Android | Edge mobile | Firefox for Android | IE mobile | Opera Android | iOS Safari |
---|---|---|---|---|---|---|---|
Basic Support | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) |
immutable | No | No | No | No | No | No | No |
stale-while-revalidate | No | No | No | No | No | No | No |
stale-if-error | No | No | No | No | No | No | No |