1.什么是浏览器缓存
浏览器缓存,简单理解就是浏览器把之前请求过的资源先存到本地,等下次再访问同一个资源时,优先直接复用本地结果,而不是每次都重新向服务器请求。
它最核心的作用有三个:
- 提升页面加载速度,尤其是二次访问时会更明显
- 减少网络请求次数,降低带宽消耗
- 减轻服务器压力,提高整体访问效率
所以面试里如果被问到“浏览器缓存有什么用”,可以直接总结成一句话: 浏览器缓存本质上是在用本地存储换网络时间。
2. 强缓存和协商缓存
浏览器缓存里最核心的两种机制,就是强缓存和协商缓存。
强缓存
强缓存的特点是:如果缓存还在有效期内,浏览器会直接使用本地资源,不会向服务器发送请求。
也就是说,强缓存命中后,整个判断过程都在浏览器本地完成,速度最快。
协商缓存
协商缓存的特点是:浏览器会先带着缓存标识去问服务器,这个资源有没有变化。
如果服务器判断资源没变,就返回 304,浏览器继续使用本地缓存;
如果资源变了,服务器就返回新的 200 响应和最新资源。
两者区别
面试里可以直接这样概括:
- 强缓存:浏览器自己决定,命中后不发请求
- 协商缓存:浏览器和服务器一起确认,命中后返回
304
3. 缓存完整流程
浏览器请求一个资源时,大致流程可以这样理解:
- 浏览器先检查本地是否有这个资源的缓存
- 如果命中强缓存,就直接使用本地资源,不发请求
- 如果强缓存没有命中,就进入协商缓存,带上缓存标识去请求服务器
- 如果服务器返回
304,说明资源没变,浏览器继续使用本地缓存 - 如果服务器返回新的
200响应,浏览器就使用最新资源,并更新本地缓存
所以整个主线可以记成一句话: 先看强缓存,没命中再走协商缓存。