Cache-Control字段是http报文中的通用首部字段,既存在于请求报文中,也存在于响应报文中。部分字段值是共有的,但是具体的处理也会有差异。
共有字段:
字段名| 请求报文 | 响应报文 |
| no-cache | 无论缓存是否过期,都要对请求进行校验 |缓存服务器在进行缓存前,必须校验是否过期 |
| no-store | 请求报文中可能存在机密信息,不可缓存 |响应报文中可能存在机密信息,不可缓存 |
| max-age=[秒] | 如果缓存资源的缓存时间值小于指定时间值,则使用缓存(当值为0时,缓存服务器通常将请求转发给源服务器,不使用缓存) | 在缓存时间内,缓存服务器不再对缓存的有效性进行检验 |
| no-transform | 禁止代理改变实体主体的媒体类型 |
| cache-extension | 新指令标记,如果缓存服务器不能理解,则忽略 |
请求报文私有字段值:
| max-stale(=[秒]) | 提示缓存服务器,即使缓存过期也使用;或者在过期后的指定时间内依然使用缓存 |
| min-fresh(=[秒]) | 提示缓存服务器,如果缓存在指定时间内还没过期,则返回 |
| only-if-cache | 提示服务器如果有缓存就返回,不需要确认有效性。如果没有,则返回504网关超时 |
响应报文私有字段值:
| public | 明确指明缓存可以给所有用户使用 |
| private | 明确指明缓存不可以给其他用户使用 |
| must-revalidate | 如果缓存未过期,则返回;否则代理在返回缓存数据之前,必须向源服务器发起请求,验证缓存是否有效。如果无法连接上源服务器,则返回504网关超时 |
| proxy-revalidate | 所有缓存服务器在返回缓存数据前,都要向源服务器发起请求验证有效性|
| s-maxage=[秒] | 缓存资源的时间小于指定时间时,直接返回缓存|