什么是强缓存和协商缓存?
缓存:
缓存是指浏览器(客户端)在本地磁盘中队访问过的资源保存的副本文件。
强缓存:
强缓存是根据返回头中的
Expires
或者Cache-Control
两个字段来控制的,都是表示资源的缓存有效时间。
协商缓存:
协商缓存是由服务器来确定缓存资源是否可用。 主要涉及到两对属性字段,都是成对出现的,即第一次请求的响应头带上某个字,
Last-Modified
或者Etag
,则后续请求则会带上对应的请求字段If-Modified-Since
或者If-None-Match
,若响应头没有Last-Modified
或者Etag
字段,则请求头也不会有对应的字段。
浏览器缓存主要有一下优点:
- 减少重复数据请求,避免通过网络再次加载资源,节省流量。
- 降低服务器的压力,提升网站性能。
- 加快客户端加载网页的速度, 提升用户体验。
强缓存和协商缓存的区别:
- 如果浏览器命中强缓存,则不需要给服务器发请求;而协商缓存最终由服务器来决定是否使用缓存,即客户端与服务器之间存在一次通信。
- 在 chrome 中强缓存(虽然没有发出真实的 http 请求)的请求状态码返回是 200 (fromcache);而协商缓存如果命中走缓存的话,请求的状态码是 304 (not modified)。