0
点赞
收藏
分享

微信扫一扫

强制缓存、协商缓存及其区别

浏览器缓存

浏览器缓存是浏览器在本地磁盘对用户最近请求过的文档进行存储,当访问者再次访问同一页面时,浏览器就可以直接从本地磁盘加载文档。

浏览器使用缓存过程图

在这里插入图片描述

浏览器缓存优点

  • 减少了冗余的数据传输;

  • 减轻服务器负担,提高了网站性能;

  • 加快客户端加载速度;

浏览器缓存方式

浏览器缓存分为缓存协商和彻底缓存,也有称之为协商缓存和强缓存。

强缓存

不会向服务器发送请求,直接从缓存中读取资源

在chrome控制台的network选项中可以看到该请求返回200的状态码;

协商缓存

向服务器发送请求,服务器会根据这个请求的request header的一些参数来判断是否命中协商缓存

如果命中,则返回304状态码并带上新的response header通知浏览器从缓存中读取资源

区别

强缓存不会发请求,协商缓存会发请求;

浏览器缓存过程

1.浏览器第一次加载资源,服务器返回200,浏览器将资源文件从服务器上请求下载下来,并把response header及该请求的返回时间一并缓存;

2.下一次加载资源时,先比较当前时间和上一次返回200时的时间差,如果没有超过cache-control设置的max-age,则没有过期,命中强缓存,不发请求直接从本地缓存读取该文件(如果浏览器不支持HTTP1.1,则用expires判断是否过期);如果时间过期,则向服务器发送header带有If-None-Match和If-Modified-Since的请求

3.服务器收到请求后,优先根据Etag的值判断被请求的文件有没有做修改,Etag值一致则没有修改,命中协商缓存,返回304;如果不一致则有改动,直接返回新的资源文件带上新的Etag值并返回200;

4.如果服务器收到的请求没有Etag值,则将If-Modified-Since和被请求文件的最后修改时间做比对,一致则命中协商缓存,返回304;不一致则返回新的last-modified和文件并返回200;

注意

用户行为对浏览器缓存的影响

用户刷新对缓存的影响

点击刷新按钮或者按F5

浏览器直接对本地的缓存文件过期,但是会带上If-Modifed-Since,If-None-Match,这就意味着服务器会对文件检查新鲜度,返回结果可能是304,也有可能是200.

用户按Ctrl+F5(强制刷新)

浏览器不仅会对本地文件过期,而且不会带上 If-Modifed-Since,If-None-Match,相当于之前从来没有请求过,返回结果是200.

地址栏回车

浏览器发起请求,按照正常流程,本地检查是否过期,然后服务器检查新鲜度,最后返回内容。

结语

本文到此结束

如果大家还有什么其他想法,欢迎在评论区交流!

举报

相关推荐

0 条评论