首页 > 试题广场 >

http协议中与资源缓存相关的协议头有哪些?

[问答题]

http协议中与资源缓存相关的协议头有哪些?

expire
cache-control
if-modified-since/last-modified
etag/if-none-match
发表于 2020-02-14 22:05:28 回复(0)
通用首部
Cache-Control: HTTP/1.1+控制缓存的协议头
pragma:HTTP/1.1版本之前控制缓存的协议头

实体首部
expires: 实体主题过期的时间
发表于 2020-03-01 23:18:30 回复(0)
通过响应来控制缓存,在响应头中主要有cache-control、pragma、expires三个响应头,其中expires是HTTP1.0中的响应头,后面直接跟一个缓存失效日期,但是服务器和客户端之间的时钟往往不同,因此通过该响应头来控制缓存失效时间不准确,一般不用,如果要设置客户端不缓存,则设置响应头“expires: -1”即可;pragema是HTTP1.1协议为了兼容HTTP1.0+协议,用来控制不缓存,“pragma: no-cache";cache-control是HTTP1.1中的响应头,其参数为相对的秒值,即过多少秒缓存失效,因此建议使用该响应头来控制缓存失效时间,其后可以跟的内容有no-cache、no-store、max-age、must-revalidate
为了兼容各个协议版本,要想客户端不缓存资源,一般都添加三个响应头:cache-control: no-cache、pragma: no-cache、expires: -1
注意:cache-control: no-cache控制缓存,客户端是会缓存资源的,只是在于原始服务器进行再验证之前不会想客户端提供资源,也就是资源新鲜度永远过期,这样比直接访问服务器节省了资源在网络中的传输成本,相比开启缓存增加了再验证的成本,性能失效介于两者之间;要想客户端缓存不从响应中拷贝资源副本,则应该使用cache-control: no-store,使用该响应头内容也可以让缓存立即删除已经拷贝的副本;而must-revalidate是服务器希望缓存能严格遵守过期信息,一般情况下类似no-cache,但在缓存与原始服务器进行新鲜度验证的时候,原始服务器不可用,这将会导致这一段时间中访问该资源会504 gateway timeout,因此建议使用no-cache
发表于 2020-02-20 17:13:08 回复(0)