Skip to content

强缓存和协商缓存分别是什么?

Posted on:2024年8月10日 at 17:05

这里说的缓存是指浏览器(客户端)在本地磁盘中对访问过的资源保存的副本文件。

浏览器缓存主要有以下几个优点:

浏览器缓存分为强缓存和协商缓存,两者有两个比较明显的区别:

请求流程

浏览器在第一次请求后缓存资源,再次请求时,会进行下面两个步骤:

强缓存

强缓存是根据返回头中的 Expires 或者 Cache-Control 两个字段来控制的,都是表示资源的缓存有效时间。

如果 Cache-Control与 Expires 同时存在的话, Cache-Control 的优先级高于 Expires 。

协商缓存

协商缓存是由服务器来确定缓存资源是否可用。 主要涉及到两对属性字段,都是成对出现的,即第一次请求的响应头带上某个字, Last-Modified 或者 Etag,则后续请求则会带上对应的请求字段 If-Modified-Since或者 If-None-Match,若响应头没有 Last-Modified 或者 Etag 字段,则请求头也不会有对应的字段。

HTTP 中并没有指定如何生成 ETag,可以由开发者自行生成,哈希是比较理想的选择。

原文转自:https://fe.ecool.fun/topic/7f7e5941-1079-476a-8a62-8ca51879c7ab