HTTP详解--通用首部字段解析(九)
-
通用首部字段
- 是指请求报文和响应报文双方都会使用的首部。
-
Cache-Control
-
作用:用来操作缓存的工作机制;
-
指令的参数是可选的,多个指令之间通过","分隔。首部字段Cache-Control的指令可用于请求及响应时;
-
指令一览
- 缓存请求指令
-
指令 |
参数 |
说明 |
no-cache |
无 |
强制向源服务器再次验证 |
no-store |
无 |
不缓存请求或响应的任何内容 |
max-age=[秒] |
必需 |
响应的最大Age值 |
max-stale(=[秒]) |
可省略 |
接收已过期的响应 |
min-fresh=[秒] |
必需 |
期望在指定时间内的响应仍有效 |
no-reansform |
无 |
代理不可更改媒体类型 |
only-if-cached |
无 |
从缓存获取资源 |
cache-extension |
- |
新指令标记(token) |
- 缓存响应指令
指令 |
参数 |
说明 |
public |
无 |
可向任意方向提供响应的缓存 |
private |
可省略 |
仅向特定用户返回响应 |
no-cache |
可省略 |
缓存前必须先确认其有效性 |
no-store |
无 |
不缓存请求或响应的任何内容 |
no-transform |
无 |
代理不可更改媒体类型 |
must-revalidate |
无 |
可缓存但必须再向源服务器进行确认 |
proxy-revalidate |
无 |
要求中间缓存服务器对缓存的响应有效性再进行确认 |
max-age=[秒] |
必需 |
响应的最大Age值 |
s-maxage=[秒] |
必需 |
公共缓存服务器响应的最大Age值 |
cache-extension |
- |
新指令标记(token) |
- public指令
Cache-Control:public |
该指令明确表明其他用户也可利用缓存 |
-
private指令
Cache-Control:private |
该指令使响应只以特定的用户作为对象,这与public相反 |
缓存服务器会对该特定用户提供资源缓存的服务,对于其他用户发送过来的请求,代理服务器则不会返回缓存 |
-
no-cache指令
Cache-Control:no-cache |
使用该指令的目的是为了防止缓存种返回过期的资源; |
如果是客户端发送的请求包含no-che指令,那么客户端不会接收缓存过的响应。缓存服务器必须把客户端请求转发给源服务器; |
如果是服务器返回的响应种包含no-cache指令,那么缓存服务器不能对资源进行缓存。源服务器以后也将不再对缓存服务器请求中提出的资源有效性进行确认,且禁止其对响应资源进行缓存操作; |
|
Cache-Control:no-cache=Location |
只能在响应中指定该参数。客户端在接收到此参数对应的响应报文后,就不能使用缓存; |
- no-store指令
Cache-Control:no-store |
该指令暗示请求(和对应的响应)或响应中包含机密信息。该指令规定缓存不能在本地存储请求或响应的任一部分 |
- s-maxage指令
Cache-Control:s-maxage=604800(单位:秒) |
只适用于供多位用户使用的公共缓存服务器。对于同一用户重复返回响应的服务器,该命令无效 |
使用该命令后,会忽略Expires首部字段及max-age指令的处理 |
-
max-age指令
Cache-Control:max-age=604800(单位:秒) |
客户端:在请求中包含该指令,会判定缓存资源的缓存时间,如果比该属性的值小,客户端就会接收缓存资源;当数值为0,缓存服务器需要将请求转发给源服务器; |
服务器:响应中包含该指令的话,缓存服务器将不对资源的有效性再作确认,而属性值则代表资源保存为缓存的最长时间; |
-
min-fresh指令
Cache-Control:min-fresh=60(单位:秒) |
该指令要求缓存服务器返回至少还未过指定时间的缓存资源 |
-
Connection
-
作用如下:
- 控制不再转发给代理的首部字段;
- 管理持久连接;
-
控制不再转发给代理的首部字段
- Connection:不再转发的首部字段名;
- 在请求或响应中使用该首部字段,可控制不再转发给代理的首部字段(即Hop-by-hop 首部)
-
管理持久连接
- Connection:close
- HTTP/1.1默认持久连接。
- 指定Connection的值为Close,表示服务器端想断开连接;
-
HTTP/1.1之前如何保持持久连接?
- Connection:Keep-Alive
- HTTP/1.1之前的版本默认连接都是非持久连接的。通过Keep-Alive可让旧版本开启持久连接;
-
-
Date
-
作用:表明创建HTTP报文的日期和时间
-
HTTP/1.1的日期格式
-
旧版本HTTP的日期格式
-
其他格式
-
-
Trailer
-
作用:说明在报文主体后记录了哪些首部字段。该首部字段可应用在HTTP/1.1版本分块传输编码时;
-
-
-
Transfer-Encoding
- 作用:规定了传输报文主体时采用的编码方式;
-
示例:
-
Upgrade
-
作用:用于检测HTTP协议及其他协议是否可使用更高的版本进行通信,其参数值可以用来指定一个完全不同的通信协议;
-
-
Via
-
作用:用于追踪客户端与服务器之间的请求和响应报文的传输路径;
- 报文经过代理或者网关时,会先在首部字段Via中附加该服务器的信息,然后再进行转发;
- 该首部字段还可避免请求回环的发生。
-
-
-
Warning
-
作用:告知用户一些与缓存有关的警告
-
-
Warning首部的格式如下:最后的日期部分可省略
-
-