HTTP 请求头Cache-Control 详解

615 阅读3分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第23天,点击查看活动详情

大家好,我是阿萨。昨天我们学习了缓存机制。[你了解缓存吗?]了解了缓存基本原理。今天我们就详细学习下抓包的请求中Cache-Control 字段的所有设置的含义。
我们现在浏览器里随便抓一个请求的header。
Image
图片中有个字段cache-control. 这个字段就是我们今天要讲解的。
一   cache-control 是干什么的? cache-control 本身就是控制缓存行为的。通过给这个字段设置不一样的值,来控制缓存的工作机制。

这个字段请求和响应的header 都会包含这个字段。下面我们分别列举下请求里的可取值范围以及响应的可取值范围。
二 请求取值范围

类型指令‍‍参数说明
表示是否能缓存no-cache强制向源服务器再次验证
控制可执行缓存对象no-store不缓存请求或响应的任何内容暗示请求中包含机密
指定缓存期限和认证max-age = [ 秒]必需响应的最大Age值缓存资源时间 < 指定值,客户端用缓存值。为0, 不使用缓存。
指定缓存期限和认证max-stale( = [ 秒])可省略接收已过期的响应
指定缓存期限和认证min-fresh = [ 秒]必需期望在指定时间内的响应仍有效
指定缓存期限和认证no-transform代理不可更改媒体类型
指定缓存期限和认证only-if-cached从缓存获取资源
 cache-control的扩展cache-extension-新指令标记(token)


三 响应取值范围
\

指令参数说明
表示是否能缓存public可向任意方提供响应的缓存其他用户也可利用缓存
表示是否能缓存private可省略仅向特定用户返回响应只对特定用户提供缓存
表示是否能缓存no-cache可省略Location缓存前必须先确认其有效性不缓存请求或响应的任何内容如果取值为Location,仅对Location不缓存,其他缓存。
控制可执行缓存对象no-store不缓存请求或响应的任何内容暗示响应中包含机密内容
指定缓存期限和认证no-transform代理不可更改媒体类型
指定缓存期限和认证must-revalidate可缓存但必须再向源服务器进行确认
指定缓存期限和认证proxy-revalidate要求中间缓存服务器对缓存的响应有效性再进行确认
指定缓存期限和认证max-age = [ 秒]必需响应的最大Age值缓存资源时间 < 指定值,客户端用缓存值。
指定缓存期限和认证s-maxage = [ 秒]必需‍‍公共缓存服务器响应的最大Age值
cache-control的扩展cache-extension-新指令标记(token)

你学会了吗?

如果觉得阿萨的内容对你有帮助,欢迎围观点赞。