0%

浏览器缓存

浏览器打开页面的时候,会加载页面所需的HTML、CSS、JS、图片等资源文件,如果每次打开都要全部重新加载,既耗时又浪费带宽,所以浏览器本身对资源文件是有缓存机制的。

概述

浏览器缓存主要分为强缓存协商缓存。当打开网站的时候,请求资源,浏览器首先会查看本地是否有这个资源,以及这个资源的response header中附带的缓存策略是什么,

强缓存

简单粗暴,如果资源没有过期,就直接取这个资源,如果过期了就走协商缓存。

判断资源是否过期,主要是根据几个字段来。

Response Header中的Cache-Control有以下几个值:

  • max-age=xxx,意思是在多少秒内都是用缓存,超过了就继续请求服务器。
  • private仅浏览器可以缓存
  • public浏览器和代理服务器都可以缓存
  • no-cache不进行强缓存
  • no-store不强缓存,也不协商缓存
    规则可以同时多条并列,逗号隔开。

协商缓存

Cache-Controlno-cache的时候,会进行协商缓存的校验。

Last-Modify搭配If-Modify-SinceLast-Modify是该资源第一次请求时,服务端会返回header中的字段,代表该资源的最后修改时间;If-Modify-Sice是第二次请求时,根据HTTP规定,浏览器会向服务端发送请求报文If-Modify-Since,询问该时间过后,资源是否被修改过。如果时间一致,则说明资源没有被修改过,返回报文304,浏览器端接到这个状态码,直接把本地缓存文件返回到客户端中,节省流量。