浏览器缓存

6 阅读2分钟

1.什么是浏览器缓存

浏览器缓存,简单理解就是浏览器把之前请求过的资源先存到本地,等下次再访问同一个资源时,优先直接复用本地结果,而不是每次都重新向服务器请求。

它最核心的作用有三个:

  • 提升页面加载速度,尤其是二次访问时会更明显
  • 减少网络请求次数,降低带宽消耗
  • 减轻服务器压力,提高整体访问效率

所以面试里如果被问到“浏览器缓存有什么用”,可以直接总结成一句话: 浏览器缓存本质上是在用本地存储换网络时间。

2. 强缓存和协商缓存

浏览器缓存里最核心的两种机制,就是强缓存和协商缓存。

强缓存

强缓存的特点是:如果缓存还在有效期内,浏览器会直接使用本地资源,不会向服务器发送请求。

也就是说,强缓存命中后,整个判断过程都在浏览器本地完成,速度最快。

协商缓存

协商缓存的特点是:浏览器会先带着缓存标识去问服务器,这个资源有没有变化。

如果服务器判断资源没变,就返回 304,浏览器继续使用本地缓存; 如果资源变了,服务器就返回新的 200 响应和最新资源。

两者区别

面试里可以直接这样概括:

  • 强缓存:浏览器自己决定,命中后不发请求
  • 协商缓存:浏览器和服务器一起确认,命中后返回 304

3. 缓存完整流程

浏览器请求一个资源时,大致流程可以这样理解:

  1. 浏览器先检查本地是否有这个资源的缓存
  2. 如果命中强缓存,就直接使用本地资源,不发请求
  3. 如果强缓存没有命中,就进入协商缓存,带上缓存标识去请求服务器
  4. 如果服务器返回 304,说明资源没变,浏览器继续使用本地缓存
  5. 如果服务器返回新的 200 响应,浏览器就使用最新资源,并更新本地缓存

所以整个主线可以记成一句话: 先看强缓存,没命中再走协商缓存。