一文读懂浏览器缓存协议

196 阅读1分钟

第一次浏览器请求资源时:

根据 强缓存Expires、Cache-Control 和协商缓存 Last-Modified、 Etag 来判断是否需要进行缓存

93aefb926894bc72493bbfcc3d55417.jpg

浏览器再次进行资源请求时:

会先判断强缓存是否过期,如果没有过期,则直接读取缓存,这个时候返回状态码就是 200(from disk)。如果过期了,则通过协商缓存给服务器发送请求,服务器来判断资源是否有改变, 如果有改变,则200返回新内容, 如果没有改变,则返回304状态码,告诉浏览器资源内容没有改变,请从本地缓存读取 a0d99a6eef444e3d9b9e6e2bddd14c9.jpg

最后附属一张图来总结:

强缓存expires和cache-control同时存在时,则cache-control会覆盖expires,expires无论有没有过期,都无效。 即:cache-control优先级 > expires优先级。

对比缓存Etag和Last-Modified同时存在时,则Etag会覆盖Last-Modified,Last-Modified不会生效。即:ETag优先级 > Last-Modified优先级。 c4b5d103f24498d8c07018bcc1e36a4.jpg