全网分析HTTP协议最全的一篇文章,程序员赶紧收藏( 四 )


Cache-Control: no-store当使用 no-store 指令时,暗示请求(和对应的响应)或响应中包含机密信息 。因此,该指令规定缓存不能在本地存储请求或响应的任一部分 。
注意:no-cache 指令代表不缓存过期的指令,缓存会向源服务器进行有效期确认后处理资源;no-store 指令才是真正的不进行缓存 。
4.1.3 指定缓存期限和认证的指令
s-maxage 指令
Cache-Control: s-maxage=604800(单位:秒)

  • s-maxage 指令的功能和 max-age 指令的相同,它们的不同点是 s-maxage 指令只适用于供多位用户使用的公共缓存服务器(一般指代理) 。也就是说,对于向同一用户重复返回响应的服务器来说,这个指令没有任何作用 。
  • 另外,当使用 s-maxage 指令后,则直接忽略对 Expires 首部字段及 max-age 指令的处理 。
max-age 指令
Cache-Control: max-age=604800(单位:秒)
  • 当客户端发送的请求中包含 max-age 指令时,如果判定缓存资源的缓存时间数值比指定的时间更小,那么客户端就接收缓存的资源 。另外,当指定 max-age 的值为0,那么缓存服务器通常需要将请求转发给源服务器 。
  • 当服务器返回的响应中包含 max-age 指令时,缓存服务器将不对资源的有效性再作确认,而 max-age 数值代表资源保存为缓存的最长时间 。
  • 应用 HTTP/1.1 版本的缓存服务器遇到同时存在 Expires 首部字段的情况时,会优先处理 max-age 指令,并忽略掉 Expires 首部字段;而 HTTP/1.0 版本的缓存服务器则相反 。
min-fresh 指令
Cache-Control: min-fresh=60(单位:秒)min-fresh 指令要求缓存服务器返回至少还未过指定时间的缓存资源 。
max-stale 指令
Cache-Control: max-stale=3600(单位:秒)
  • 使用 max-stale 可指示缓存资源,即使过期也照常接收 。
  • 如果指令未指定参数值,那么无论经过多久,客户端都会接收响应;如果指定了具体参数值,那么即使过期,只要仍处于 max-stale 指定的时间内,仍旧会被客户端接收 。
only-if-cached 指令
Cache-Control: only-if-cached表示客户端仅在缓存服务器本地缓存目标资源的情况下才会要求其返回 。换言之,该指令要求缓存服务器不重新加载响应,也不会再次确认资源的有效性 。
must-revalidate 指令
Cache-Control: must-revalidate使用 must-revalidate 指令,代理会向源服务器再次验证即将返回的响应缓存目前是否仍有效 。另外,使用 must-revalidate 指令会忽略请求的 max-stale 指令 。
proxy-revalidate 指令
Cache-Control: proxy-revalidateproxy-revalidate 指令要求所有的缓存服务器在接收到客户端带有该指令的请求返回响应之前,必须再次验证缓存的有效性 。
no-transform 指令
Cache-Control: no-transform使用 no-transform 指令规定无论是在请求还是响应中,缓存都不能改变实体主体的媒体类型 。这样做可防止缓存或代理压缩图片等类似操作 。
4.1.4 Cache-Control 扩展
Cache-Control: private, community="UCI"通过 cache-extension 标记(token),可以扩展 Cache-Control 首部字段内的指令 。上述 community 指令即扩展的指令,如果缓存服务器不能理解这个新指令,就会直接忽略掉 。
4.2 Connection
Connection 首部字段具备以下两个作用:
控制不再转发的首部字段
Connection: Upgrade在客户端发送请求和服务器返回响应中,使用 Connection 首部字段,可控制不再转发给代理的首部字段,即删除后再转发(即Hop-by-hop首部) 。
管理持久连接
Connection: closeHTTP/1.1 版本的默认连接都是持久连接 。当服务器端想明确断开连接时,则指定 Connection 首部字段的值为 close 。
Connection: Keep-AliveHTTP/1.1 之前的 HTTP 版本的默认连接都是非持久连接 。为此,如果想在旧版本的 HTTP 协议上维持持续连接,则需要指定 Connection 首部字段的值为 Keep-Alive 。
4.3 Date
表明创建 HTTP 报文的日期和时间 。
Date: Mon, 10 Jul 2017 15:50:06 GMTHTTP/1.1 协议使用在 RFC1123 中规定的日期时间的格式 。
4.4 Pragma
Pragma 首部字段是 HTTP/1.1 版本之前的历史遗留字段,仅作为与 HTTP/1.0 的向后兼容而定义 。
Pragma: no-cache