本文参考mdn Cache-Control 文档

缓存/请求指令

缓存请求和缓存响应共有指令
no-cahce,no-store,no-transform,max-age=
缓存请求指令(单独)
max-stale[=],min-fresh-,only-if-cached
缓存响应指令(单独)
must-revalidate,public,private,proxy-revalidate,s-maxage=
**

指令详解

可缓存性

public:响应可被任何对象(包括发请求的客户端,代理服务器等)即使是通常不可缓存的内容(如响应头没有max-age指令或Expires消息头,或请求方法为post)

private:默认值,只能被单个用户缓存(对应用户本地浏览器)

no-cache:可缓存,缓存前必须把缓存提交给原始服务器进行协商缓存验证

no-store:不可缓存(不使用任何缓存)

到期

max-age=单位为秒,超出这个时间缓存就被认为过期

s-maxage=覆盖max-ageExpires,仅适用于public指令,并被private忽略

max-stale[=]:接收过期资源(可以限制在一定时间内)

min-fresh=获取一个指定时间内保持最新状态的响应

重新验证和重新加载

must-revalidate:一旦资源过期,就向原始服务器发起验证,在成功验证前,缓存不能用于该资源相应后续请求

proxy-revalidate:must-revalidate作用相同,但仅适用于public指令,并被private忽略

其他

no-transform:不得对资源进行转换或转变。Content-EncodingContent-RangeContent-Type等HTTP头不能由代理修改

only-if-cached:表示客户端只接受已缓存的响应,不向原始服务器发出是否更新的请求

注意

max-age=0no-cache仍旧进行缓存。只是每次使用缓存资源前都会向服务器发起重新验证的请求,已验证资源的时效性