HTTP的场景实践| 青训营

49 阅读2分钟

我选择 Google Chrome 浏览器,对其涉及的请求中的缓存策略进行具体分析。

Chrome 浏览器中的缓存策略主要分为以下几种:

1. 强缓存

强缓存是指浏览器在发送请求前,先检查本地缓存是否过期,如果未过期,则直接使用本地缓存,不发送请求到服务器。如果过期了,才会发送请求到服务器获取最新资源。强缓存的机制主要通过 HTTP 头信息中的 Expires 和 Cache-Control 字段来控制。

  • Expires 字段:指定了缓存的过期时间,是一个 GMT 格式的日期字符串。
  • Cache-Control 字段:指定了缓存的最大有效时间,可以是秒数或分钟数,也可以使用 max-age 指令来指定。

2. 协商缓存

协商缓存是指浏览器在发送请求前,向服务器发送一个 If-Modified-Since 或 If-None-Match 字段的请求头,询问服务器资源是否已经发生了改变。如果服务器返回 304 状态码,表示资源未发生变化,则浏览器可以直接使用本地缓存;如果服务器返回 200 状态码,表示资源已经发生了改变,则浏览器需要重新下载最新的资源。协商缓存主要通过 Last-Modified 和 ETag 字段来控制。

  • Last-Modified 字段:指定了资源的最后修改时间,是一个 GMT 格式的日期字符串。
  • ETag 字段:指定了资源的唯一标识符,是一个字符串。

Chrome 浏览器在处理缓存时,会优先使用强缓存,如果强缓存失效了,才会使用协商缓存。如果协商缓存也失效了,浏览器才会重新下载最新的资源。

除了上述的缓存策略外,Chrome 浏览器还支持一些其他的高级缓存策略,比如 Service Worker 缓存、IndexedDB 缓存等。这些缓存策略可以在离线情况下使用,从而提高应用的可用性和性能。