HTTP/1.1通用首部字段
Cache-Chtrol操作缓存的工作机制
- 缓存请求指令
- 缓存响应指令
public:其他用户也可利用缓存
private:响应只给特定的用户
on-cache:防止从缓存中获取过期资源
客户端发送请求如果有no-cache,则表示客户端不会接受缓存过的资源,缓存服务器必须把客户端请求发送给源服务器
如果服务器端响应有no-cache,则表示缓存服务器不能对资源进行缓存,源服务器也不再对中间缓存服务器请求中提出的资源有效性进行验证,且禁止其他响应资源进行缓存。
no-store:控制可执行缓存的对象
当使用no-store时,暗示请求或响应中有机密信息。
注意:no-cache指的是不缓存过期资源,no-store才是真正的不缓存
s-maxage:指定缓存期限
s-maxage同max-age,不同点是s-maxage针对诸多用户使用的公共缓存服务器(代理)
当使用s-maxage时,可以自动忽略Expires和max-age
若max-age为0,则每次都会向源服务器进行请求
若有max-age则会忽略Expires首部字段
min-fresh:
min-fresh 指令要求缓存服务器返回至少还未过指定时间的缓存资源。比如,当指定 min-fresh 为 60 秒后,过了 60 秒的资源都无法作为响应返回了。
max-stale:指示缓存资源,即使过期也照常接收
如果指令未指定参数值,那么无论经过多久,客户端都会接收响应;如果指令中指定了具体数值,那么即使过期,只要仍处于 max-stale指定的时间内,仍旧会被客户端接收。
only-if-cache:
使用 only-if-cached 指令表示客户端仅在缓存服务器本地缓存目标资源的情况下才会要求其返回。换言之,该指令要求缓存服务器不重新加载响应,也不会再次确认资源有效性。若发生请求缓存服务器的本地缓存无响应,则返回状态码 504 Gateway Timeout
must-revalidate:
使用 must-revalidate 指令,代理会向源服务器再次验证即将返回的响应缓存目前是否仍然有效
若代理无法连通源服务器再次获取有效资源的话,缓存必须给客户端一条 504(Gateway Timeout)状态码。
另外,使用 must-revalidate 指令会忽略请求的 max-stale 指令(即使已经在首部使用了 max-stale,也不会再有效果)
no-transform:
使用 no-transform 指令规定无论是在请求还是响应中,缓存都不能改变实体主体的媒体类型。这样做可防止缓存或代理压缩图片等类似操作
proxy-revalidate:
proxy-revalidate 指令要求所有的缓存服务器在接收到客户端带有该指令的请求返回响应之前,必须再次验证缓存的有效性。
Connection
- 控制不在转发给代理的首部字段
- 管理持久连接
HTTP/1.1 版本的默认连接都是持久连接。为此,客户端会在持久连接上连续发送请求。当服务器端想明确断开连接时,则指定Connection 首部字段的值为 Close
HTTP/1.1 之前的 HTTP 版本的默认连接都是非持久连接。为此,如果想在旧版本的 HTTP 协议上维持持续连接,则需要指定Connection 首部字段的值为 Keep-Alive。
Date
表明创建HTTP报文的日期和时间
Trailer
会事先说明在报文主体后记录了哪些首部字段。该首部字段可应用在 HTTP/1.1 版本分块传输编码时。
Transform-Encoding
规定了传输报文主体时用的编码方式
Upgrade
用于检测HTTP协议或者其他协议是否可以使用更高版本进行通信,由于upgrade仅限于客户端和邻近服务器,所以upgrade要搭配connection:upgrade使用
Via
追踪请求和响应本文的传输路径
报文在经过网关和服务器时,会在报文首部增加via附带服务器信息
Warning
告知用户与缓存相关的警告
HTTP/1.1警告码