不会向服务器发送请求,直接从缓存中读取资源。Devtool Network中返回200的状态码。
示例:
cache-control: max-age=31536000
Expires:过期时间,如果设置了时间,则浏览器会在设置的时间内直接读取缓存,不再请求。
Cache-Control:当值设为 max-age=300
时,则代表在这个请求正确返回时间(浏览器也会记录下来)的5分钟内再次加载资源,就会命中强缓存。
cache-control
除了该字段外,还有下面几个比较常用的设置值:Expires | Cache-Control | |
---|---|---|
时间单位 | 分钟 | 秒 max-age |
优先级 | 更低 | 更高 |
协议版本 | HTTP 1.0 | HTTP 1.1 |
Expires
设置以分钟为单位的绝对过期时间,cache-control
设置相对过期时间, max-age
指明以秒为单位的缓存时间。
Expires
优先级比 Cache-Control
低,同时设置 Expires
和 Cache-Control
则后者生效,cache-control会覆盖expires,建议两个都写。
也叫对比缓存。
在使用本地缓存前,会先向服务器发送请求,进行新鲜度校验。服务器会根据 请求 header
中的一些参数判断是否命中协商缓存。如果命中,服务器返回304状态码并带上新的 响应 header
,通知浏览器从缓存中读取资源。
协商缓存可以解决强缓存情况下,资源不更新的问题。