HTTP 请求头Cache-Control 详解

简介: HTTP 请求头Cache-Control 详解

大家好,我是阿萨。昨天我们学习了缓存机制。你了解缓存吗?了解了缓存基本原理。今天我们就详细学习下抓包的请求中Cache-Control 字段的所有设置的含义。
我们现在浏览器里随便抓一个请求的header。



图片中有个字段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)


你学会了吗?

相关文章
|
6月前
|
数据采集 JSON 网络协议
请你详细介绍一下HTTP请求头的常用格式
【2月更文挑战第21天】【2月更文挑战第65篇】请你详细介绍一下HTTP请求头的常用格式
69 2
|
5月前
|
安全 搜索推荐
基础入门 HTTP数据包&Postman构造&请求方法&请求头修改&状态码判断
基础入门 HTTP数据包&Postman构造&请求方法&请求头修改&状态码判断
|
5月前
|
API Python
使用Python获取HTTP请求头数据
在Python Web开发中,`requests`库用于发送HTTP请求,请求头是关键元素,包含客户端信息和请求详情。要查看请求头,先创建`Request`对象,打印其`headers`属性,然后使用`get`等方法发送请求并获取响应头。别忘了处理不同HTTP方法、内容类型以及异常。使用`Session`管理会话状态,并考虑日志记录以调试。通过控制请求头,能有效与服务器通信。
|
6月前
|
数据采集 API
请解释什么是 HTTP 请求头,以及在爬虫中为什么要设置请求头?
请解释什么是 HTTP 请求头,以及在爬虫中为什么要设置请求头?
213 2
|
6月前
|
XML JSON 监控
深入解析JMeter HTTP 请求头:实战技巧
在深入研究 JMeter 的过程中,任何涉及性能测试或接口验证的专业人员都会认识到,合理配置HTTP请求头部信息是实现精确测试的关键步骤之一。不同情景下,如数据提交形式的不同(例如 JSON、XML 等),或是需要通过 HTTP 头传递特定的认证信息(如使用 JWT 或 OAuth 2.0 令牌)时,了解如何在 JMeter 中灵活设置请求头显得尤为重要。
|
6月前
|
数据采集 缓存 前端开发
http和https请求服务器的时候在请求头部分都带什么到服务器呢?
HTTP和HTTPS请求头基本结构相似,HTTPS多了一层SSL/TLS加密。常见请求头如Accept(指定内容类型)、Authorization(身份验证)、Cookie(会话跟踪)、User-Agent(标识用户代理)等。HTTPS特有的头包括Upgrade-Insecure-Requests(升级到HTTPS)、Strict-Transport-Security(强制使用HTTPS)、Sec-Fetch-*(安全策略)和X-Content-Type-Options、X-Frame-Options等(增强安全性)。实际应用中,请求头会根据需求和安全策略变化。
100 0
|
6月前
|
Python
HTTP请求头
这是一段描述如何处理HTTP请求头的Python代码。具体来说,这段代码的功能包括:
80 3
|
存储 缓存 网络协议
场景应用:常见的HTTP协议请求头有哪些?
场景应用:常见的HTTP协议请求头有哪些?
252 0
|
前端开发 Java
java在过滤器中为http请求加请求头header
现在有一个需求场景是,每一个请求我都需要在请求头里面加上token这个请求头,作为一种校验机制,传统的接口可以通过设置一个全局的变量,然后通过页面携带过来(大概就是先将我们的token放在session中,写一个服务用来获取session中的token,然后主页面用ajax调用接口,将token放在隐藏域中,然后将请求头放进来,用ajax方法,这里不想洗说了),但是有一种情况是通过页面传递的并不一定都会适用所有接口,比如上传和下载的接口有时候头里面就没有token参数,可能是上传和下载是用表单提交的 这个时候如何将请求头通过后台的方法加进来? 想到用过滤器,用后台方法强制加入请求头。
154 0
|
Web App开发 新零售 前端开发
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html><head><meta http-equiv="Cont
1.尽可能地了解需求,系统层面适用开闭原则 2.模块化,低耦合,能快速响应变化,也可以避免一个子系统的问题波及整个大系统 3.
750 0