must-revalidate指令

文章插图
使用must-revalidate指令,代理会向源服务器再次验证即将返回的响应缓存目前是否仍然有效 。
若代理无法连通源服务器再次获取有效资源的话,缓存必须给客户端一条504(Gateway Timeout)状态码 。
另外,使用must-revalidate指令会忽略请求的max-stale指令(即使已经在首部使用了max-stale,也不会再有效果) 。
proxy-revalidate指令

文章插图
proxy-revalidate指令要求所有的缓存服务器在接收到客户端带有该指令的请求返回响应之前,必须再次验证缓存的有效性 。
no-transform指令

文章插图
使用no-transform指令规定无论是在请求还是响应中,缓存都不能改变实体主体的媒体类型 。
这样做可防止缓存或代理压缩图片等类似操作 。
Cache-Control扩展
cache-extension token

文章插图
通过cache-extension标记(token),可以扩展Cache-Control首部字段内的指令 。
如上例,Cache-Control首部字段本身没有community这个指令 。借助extension tokens实现了该指令的添加 。如果缓存服务器不能理解community这个新指令,就会直接忽略 。因此,extension tokens仅对能理解它的缓存服务器来说是有意义的 。
Connection
Connection首部字段具备如下两个作用 。

文章插图

文章插图
在客户端发送请求和服务器返回响应内,使用Connection首部字段,可控制不再转发给代理的首部字段(即Hop-by-hop首部) 。
管理持久连接

文章插图
HTTP/1.1版本的默认连接都是持久连接 。为此,客户端会在持久连接上连续发送请求 。当服务器端想明确断开连接时,则指定Connection首部字段的值为Close 。

文章插图
HTTP/1.1之前的HTTP版本的默认连接都是非持久连接 。为此,如果想在旧版本的HTTP协议上维持持续连接,则需要指定Connection首部字段的值为Keep-Alive 。
Date
首部字段Date表明创建HTTP报文的日期和时间 。

文章插图
HTTP/1.1协议使用在RFC1123中规定的日期时间的格式

文章插图
之前的HTTP协议版本中使用在RFC850中定义的格式

文章插图
除此之外,还有一种格式 。它与C标准库内的asctime()函数的输出格式一致 。

文章插图
Pragma
Pragma是HTTP/1.1之前版本的历史遗留字段,仅作为与HTTP/1.0的向后兼容而定义 。
规范定义的形式唯一

文章插图
该首部字段属于通用首部字段,但只用在客户端发送的请求中 。客户端会要求所有的中间服务器不返回缓存的资源 。

文章插图
所有的中间服务器如果都能以HTTP/1.1为基准,那直接采用Cache-Control: no-cache指定缓存的处理方式是最为理想的 。但要整体掌握全部中间服务器使用的HTTP协议版本却是不现实的 。因此,发送的请求会同时含有下面两个首部字段 。

文章插图
Trailer

文章插图
首部字段Trailer会事先说明在报文主体后记录了哪些首部字段 。该首部字段可应用在HTTP/1.1版本分块传输编码时 。

文章插图
以上用例中,指定首部字段Trailer的值为Expires,在报文主体之后(分块长度0之后)出现了首部字段Expires 。
推荐阅读
- 你知道今日头条极速版怎样“关闭任务中心 隐藏奖励任务”吗?
- 心理测试 风景?测试你最大的魅力在哪里-
- 快递|当下最赚钱的行业,你知道有哪些吗?这五个行业都可以考虑
- AMD|全球第一次!AMD显卡走入迷你机 却配了个老锐龙
- 怎样有效的锻炼协调性?
- 我不知道你是否爱我?我爱你你不知道
- 像莲花一样,你会完全升华自己
- 每晚在床头做会让你更加自信
- 睡眠的最后一根“救命稻草”,你是否抓得住
- 适合白领保健的四个瑜伽动作,不知道的太可惜了
