HTTP 缓存Cache-control 头

缓存是一种保存资源副本并在下次请求时直接使用该副本的技术

缓存控制  

Cache-control 头

属性值 功能 说明
no-store
禁止进行缓存 缓存中不得存储任何关于客户端请求和服务端响应的内容
no-cache
强制确认缓存 每次有请求发出时,缓存会将此请求发到服务器,服务器端会验证请求中所描述的缓存是否过期,若未过期(注:实际就是返回304),则缓存才使用本地缓存副本
private
私有缓存  表示该响应是专用于某单个用户的,中间人不能缓存此响应,该响应只能应用于浏览器私有缓存中
public
公共缓存  表示该响应可以被任何中间人(译者注:比如中间代理、CDN等)缓存
max-age
缓存过期机制  表示资源能够被缓存(保持新鲜)的最大时间
must-revalidate
 缓存验证确认  缓存在考虑使用一个陈旧的资源时,必须先验证它的状态,已过期的缓存将不被使用

Pragma 头

是HTTP/1.0标准中定义的一个header属性,请求中包含Pragma的效果跟在头信息中定义Cache-Control: no-cache相同,通常定义Pragma以向后兼容基于HTTP/1.0的客户端

缓存验证

ETag

如果资源请求的响应头里含有ETag, 客户端可以在后续的请求的头中带上 If-None-Match 头来验证缓存

对比资源的签名判断是否使用缓存

配合 If-Match 或 If-Non-Match 使用

 

Last-Modified

弱校验器,只能精确到一秒。如果响应头里含有这个信息,客户端可以在后续的请求中带上 If-Modified-Since 来验证缓存

对比上次修改时间以验证资源是否需要更新

配合 If-Modified-Since 或 If-Unmodified-Since 使用

带Vary头的响应

Vary HTTP 响应头决定了对于后续的请求头,判断是请求一个新的资源还是使用缓存的文件。

当缓存服务器收到一个请求,只有当前的请求和原始(缓存)的请求头跟缓存的响应头里的Vary都匹配,才能使用缓存的响应

 

posted on 2019-12-04 17:14  听说你比我贱  阅读(385)  评论(0编辑  收藏  举报

导航