一句话说清浏览器缓存

104 阅读1分钟

浏览器缓存分为强缓存和协商缓存,强缓存有 http1.0提供的 expries 和 http1.1 提供的 Cache-Control, 协商缓存有 http1.0提供的 If-Modified-Since/Last-Modified 和 http1.1 提供的 If-None-Match / E-tag,expries 是浏览器返回的绝对时间,浏览器请求需要时间,所以会出现误差, 所以 Cache-Control 是相对时间,解决了误差, If-Modified-Since/Last-Modified 只能精确到1秒, If-None-Match / E-tag 相当于指纹标签,解决了1秒误差。浏览器发送请求,会先询问是否有缓存,没有缓存直接请求服务器,有强缓存, 强缓存未过期直接用缓存,强缓存过期,有协商缓存向服务器端询问协商缓存是否过期, 未过期返回 304,使用缓存, 已过期返回新数据。