你必须知道的常用的报文首部字段( 二 )


你必须知道的常用的报文首部字段

文章插图
 
Cache-Control指令一览
你必须知道的常用的报文首部字段

文章插图
 

你必须知道的常用的报文首部字段

文章插图
 
表示是否能缓存的指令
public指令
你必须知道的常用的报文首部字段

文章插图
 
当指定使用public指令时,则明确表明其他用户也可利用缓存 。
private指令
你必须知道的常用的报文首部字段

文章插图
 
当指定private指令后,响应只以特定的用户作为对象,这与public指令的行为相反 。
缓存服务器会对该特定用户提供资源缓存的服务,对于其他用户发送过来的请求,代理服务器则不会返回缓存 。
no-cache指令
你必须知道的常用的报文首部字段

文章插图
 
使用no-cache指令的目的是为了防止从缓存中返回过期的资源 。
客户端发送的请求中如果包含no-cache指令,则表示客户端将不会接收缓存过的响应 。于是,“中间”的缓存服务器必须把客户端请求转发给源服务器 。
如果服务器返回的响应中包含no-cache指令,那么缓存服务器不能对资源进行缓存 。源服务器以后也将不再对缓存服务器请求中提出的资源有效性进行确认,且禁止其对相应资源进行缓存操作 。
你必须知道的常用的报文首部字段

文章插图
 
由服务器返回的响应中,若报文首部字段Cache-Control中对no-cache字段名具体指定参数值,那么客户端在接收到这个被指定参数值的首部字段对应的响应报文后,就不能使用缓存 。换言之,无参数值的首部字段可以使用缓存 。只能在响应指令中指定该参数 。
控制可执行缓存的对象的指令
no-store指令
你必须知道的常用的报文首部字段

文章插图
 
当使用no-store指令[插图]时,暗示请求(和对应的响应)或响应中包含机密信息 。
因此,该指令规定缓存不能在本地存储请求或响应的任一部分 。
指定缓存期限和认证的指令
s-maxage指令
你必须知道的常用的报文首部字段

文章插图
 
s-maxage指令的功能和max-age指令的相同,它们的不同点是s-maxage指令只适用于供多位用户使用的公共缓存服务器[插图] 。也就是说,对于向同一用户重复返回响应的服务器来说,这个指令没有任何作用 。
另外,当使用s-maxage指令后,则直接忽略对Expires首部字段及max-age指令的处理 。
max-age指令
你必须知道的常用的报文首部字段

文章插图
 
当客户端发送的请求中包含max-age指令时,如果判定缓存资源的缓存时间数值比指定时间的数值更小,那么客户端就接收缓存的资源 。另外,当指定max-age值为0,那么缓存服务器通常需要将请求转发给源服务器 。
当服务器返回的响应中包含max-age指令时,缓存服务器将不对资源的有效性再作确认,而max-age数值代表资源保存为缓存的最长时间 。
应用HTTP/1.1版本的缓存服务器遇到同时存在Expires首部字段的情况时,会优先处理max-age指令,而忽略掉Expires首部字段 。而HTTP/1.0版本的缓存服务器的情况却相反,max-age指令会被忽略掉 。
min-fresh指令
你必须知道的常用的报文首部字段

文章插图
 
【你必须知道的常用的报文首部字段】min-fresh指令要求缓存服务器返回至少还未过指定时间的缓存资源 。
比如,当指定min-fresh为60秒后,在这60秒以内如果有超过有效期限的资源都无法作为响应返回了 。
max-stale指令
你必须知道的常用的报文首部字段

文章插图
 
使用max-stale可指示缓存资源,即使过期也照常接收 。
如果指令未指定参数值,那么无论经过多久,客户端都会接收响应;如果指令中指定了具体数值,那么即使过期,只要仍处于max-stale指定的时间内,仍旧会被客户端接收 。
only-if-cached指令
你必须知道的常用的报文首部字段

文章插图
 
使用only-if-cached指令表示客户端仅在缓存服务器本地缓存目标资源的情况下才会要求其返回 。换言之,该指令要求缓存服务器不重新加载响应,也不会再次确认资源有效性 。若发生请求缓存服务器的本地缓存无响应,则返回状态码504 GatewayTimeout 。


推荐阅读