1. 减少了冗余的数据传输,节省了带宽
  2. 减少了服务器的负担,大大提升了网站的性能
  3. 加快了客户端加载网页的速度

Untitled

强缓存

不会向服务器发送请求,直接从缓存中读取资源。Devtool Network中返回200的状态码。

Untitled

Untitled

示例:

cache-control: max-age=31536000

Expires:过期时间,如果设置了时间,则浏览器会在设置的时间内直接读取缓存,不再请求。

Cache-Control:当值设为 max-age=300 时,则代表在这个请求正确返回时间(浏览器也会记录下来)的5分钟内再次加载资源,就会命中强缓存。

Expires Cache-Control
时间单位 分钟 max-age
优先级 更低 更高
协议版本 HTTP 1.0 HTTP 1.1

Expires 设置以分钟为单位的绝对过期时间,cache-control设置相对过期时间, max-age 指明以秒为单位的缓存时间。

Expires 优先级比 Cache-Control 低,同时设置 ExpiresCache-Control 则后者生效,cache-control会覆盖expires,建议两个都写。

协商缓存

也叫对比缓存。

在使用本地缓存前,会先向服务器发送请求,进行新鲜度校验。服务器会根据 请求 header 中的一些参数判断是否命中协商缓存。如果命中,服务器返回304状态码并带上新的 响应 header,通知浏览器从缓存中读取资源。

协商缓存可以解决强缓存情况下,资源不更新的问题。