HTTP首部字段将定义成缓存代理和非缓存代理两种类型:

端到端(End-to-end Header):此类中的首部字段会转发给请求/响应对应的最终接受目标,且必须在由缓存生成的响应中,另外规定它必须被转发。

逐跳首部(Hop-by-hop Header):此类中的首部只对单次转发有效,会因通过缓存或代理而不再转发。如:Connection,Keep-Alive,Upgrade,Proxy-Authenticate,Proxy-Authorization等。

当有多个指令参数时,多个指令之间可通过”,”分隔,例如首部字段Cache-Control:

Cache-Control: private,max-age=0,no-cache

Cache-Control指令一览:

缓存请求指令:

指令 参数 说明
no-cache 强制向源服务器再次验证
no-store 不缓存请求或响应的任何内容
max-age=[秒] 必需 响应的最大Age值
max-stale=[秒] 可省略 接受已过的响应
min-fresh=[秒] 必需 期望在指定时间内的响应仍有效
no-transform 代理不可更改媒体类型
only-if-cache 从缓存获取资源
cache-extension - 新指令标记

缓存响应指令:

指令 参数 说明
public 可向任意方提供响应的缓存
private 可省略 仅向特定用户返回响应
no-cache 可省略 缓存前必须先确认其有效性
no-store 不缓存请求或响应的任何内容
no-transform 代理不可更改媒体类型
msut-revalidate 可缓存但必须再向源服务器进行确认
proxy-revalidate 要求中间缓存服务器对缓存的响应有效性再进行确认
max-age=[秒] 必需 响应的最大Age值
s-maxage=[秒] 必需 公共缓存服务器响应的最大Age值
cache-extension - 新指令标记[token]

Connection首部字段有两个作用:

控制不再转发给代理的首部字段,如:Connection:不再转发的首部字段名.

管理持久化连接,HTTP/1.1默认是持久连接,如果想断开连接,可以用Connection: Close.

 这里写图片描述

首部字段Upgrade用于检测HTTP协议及其他协议是否可使用更高的版本进行通信,其参数值可以用来指定一个完全不同的通信协议,不过产生对象仅限于客户端和邻接服务器之间。

首部字段Warning来告知用户一些与缓存相关的问题的警告,其格式:Warning:[警告码][警告的主机:端口号][警告内容]([日期时间])。

警告码:

警告码 警告内容 说明
110 Response is stale响应已过期) 代理返回已过期的资源
111 Revalidation failed再验证失败) 代理再验证资源有效性时失败服务器无法到达等原因)
112 Disconnection operation断开连接操作) 代理与互联网连接被故意切断
113 Heuristic expiration试探性过期) 响应的使用其超过24小时有效缓存的设定时间大于24小时的情况下)
199 Miscellaneous warning杂项警告) 任意的警告内容
214 Transformation applied使用了转换) 代理对内容编码或媒体类型等执行了某些处理时
299 Miscellaneous persistent warning持久杂项警告) 任意的警告内容




相关内容