浏览器的缓存机制:
浏览器发起HTTP请求-----服务器响应该请求。那么浏览器第一次向服务器发起该请求后拿到的请求结果,会根据响应报文中HTTP头的缓存标识,决定是否缓存结果,是----则将请求结果和缓存标识存入浏览器缓存中。
强制缓存优先于协商缓存进行:
1.强缓存:
不会向服务器发送请求,直接从缓存中读取资源,在chrome控制台的network选项中可以看到该请求返回200的状态码;
2.协商缓存:
向服务器发送请求,服务器会根据这个请求的request header的一些参数来判断是否命中协商缓存,如果命中,则返回304状态码并带上新的response header通知浏览器从缓存中读取资源;
两者的共同点是,都是从客户端缓存中读取资源;区别是强缓存不会发请求,协商缓存会发请求。
用户行为对浏览器缓存的影响:
点击刷新按钮或者按F5:
浏览器直接对本地的缓存文件过期,但是会带上If-Modifed-Since,If-None-Match,这就意味着服务器会对文件检查新鲜度,返回结果可能是304,也有可能是200.
用户按Ctrl+F5(强制刷新):
浏览器不仅会对本地文件过期,而且不会带上 If-Modifed-Since,If-None-Match,相当于之前从来没有请求过,返回结果是200.
地址栏回车:
浏览器发起请求,按照正常流程,本地检查是否过期,然后服务器检查新鲜度,最后返回内容。
帅哥,点个赞再走呗,mua~