共计 803 个字符,预计需要花费 3 分钟才能阅读完成。
作用
再次拜访网页可能放慢用户访问速度和节俭流量。
缓存策略
HTTP Cache-Control 标头定义了缓存策略,定义了在什么条件下能够缓存响应,及能够缓存多久。
在 HTTP/1.1 标准定义的,取代了之前同来定义缓存策略的标头(如 Expires)
缓存条件
no store
不可缓存
no cache
每次应用缓存都要去服务端确认资源是否是最新的。
能在哪缓存
Public
默认
privite
只能在用户浏览器上缓存,不可在公共缓存上缓存
存多久
MAX-AGE
应用缓存
申请资源时,若无缓存,要从服务端获取
是否是最新的
如果是最新的则持续应用缓存,否则再从服务端申请。
缓存的可用信息都放在 http response header
中
EXPIRES
标示了过期工夫。
毛病
如果客户端和服务器工夫不统一,文件更新的信息也会有误差。
http/1.0
LAST-MODIFIED
资源最初更新工夫。准确到秒。
客户端再次申请资源时,会把这个值放在 request header If-Modified-Since
中,来判断有无更新。
http/1.0
毛病
若在秒内有更新,则有误差。
ETAG
返回一个依据文件内容变动的字符串标识,浏览器承受后,下一次申请,会在 request header 作为 If-None-Match 的值发送,如果 etag 值没有变动,则应用缓存。优先级最高。
RESPONSE STATUS
服务器获得最新后果
返回 200
间接从本地缓存读取的资源
返回 200
和服务器确认后应用缓存
返回 304
存储地位
浏览器会判断放在 memory cache 或 disk cache 中,品牌不同会有差别。
如何配置
在服务端配置,可参考 https://github.com/h5bp/server-configs
参考
Google 文档 HTTP 缓存
补充浏览
http-cache-headers
http-cache
留神
对于非动态资源,如获取用户信息的 json (/user/:id
),浏览器可能漠视缓存。
正文完