17 - 03 - 18 图解HTTP(22)

本文详细介绍了HTTP缓存控制中的关键指令,包括s-maxage、max-age、min-fresh、max-stale、only-if-cached、must-revalidate、proxy-revalidate以及no-transform等,并解释了这些指令的作用和应用场景。

# 指定缓存期限和认证的指令:

# s-maxage指令

ex :  Cache-Control: s-maxage=604800 (单位 :秒)

s-maxage指令的功能和 max-age指令的相同,它们的不同点是 s-maxage  指令只适用于供多位用户使用的公共缓存服务器(②) 。也就是说,对于向同一用户重复返回响应的服务器来说,这个指令没有任何作用。 --②:一般指代理。

另外,当使用 s-maxage  指令后,则直接忽略对 Expires  首部字段及 max-age  指令的处理。

# max-age  指令

ex:  Cache-Control: max-age=604800 (单位:秒)

当客户端发送的请求中包含 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  秒的资源都无法作为响应返回了。

ex:  Cache-Control: min-fresh=60 (单位:秒)

# max-stale  指令

使用 max-stale  可指示缓存资源,即使过期也照常接收。

如果指令未指定参数值,那么无论经过多久,客户端都会接收响应;如果指令中指定了具体数值,那么即使过期,只要仍处于 max-stale  指定的时间内,仍旧会被客户端接收。

ex:  Cache-Control: max-stale=3600 (单位:秒)

# only-if-cached  指令

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

ex:  Cache-Control: only-if-cached

# must-revalidate  指令

使用此指令,代理会向源服务器再次验证即将返回的响应缓存目前是否仍然有效。若代理无法连通源服务器再次获取有效资源的话,缓存必须给客户端一条504(Gateway Timeout)状态码。

另外,使用 must-revalidate指令会忽略请求的 max-stale指令(即使已经在首部使用了 max-stale ,也不会再有效果)。

ex:  Cache-Control: must-revalidate

# proxy-revalidate  指令

proxy-revalidate指令要求所有的缓存服务器在接收到客户端带有该指令的请求返回响应之前,必须再次验证缓存的有效性。

ex:  Cache-Control: proxy-revalidate

# no-transform  指令

指令规定无论是在请求还是响应中,缓存都不能改变实体主体的媒体类型。这样做可防止缓存或代理压缩图片等类似操作。

ex:  Cache-Control: no-transform

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值