强缓存
定义
浏览器判断是否用缓存,不发请求到服务器。
解释
如果服务器配置了缓存策略,第一次请求时响应头会带上属性**expires过期时间或cache-control**缓存配置,cache-control优先级高于expires。
**cache-control**的值
max-age 相对时间有效期,比如3600秒
no-cache 不使用本地缓存,使用协商缓存
no-store 不缓存,永远请求最新的
public 允许客户端和dns或代理服务器缓存
pravite 只允许客户端缓存
协商缓存
定义
如果不开启强缓存,协商缓存没意义。当强制缓存失效时,发送请求到服务器,使用协商缓存策略,服务器判断是否用缓存
解释
协商缓存主要看响应头的两个属性**Etag和last-Modified**,Etag优先级高于last-modified。
Etag,代表文件唯一标识,如果文件有改动,etag就变了,所以etag变了,服务器就认为文件更新了,就返回新的资源
前端在发送请求时请求头会带上**if-modified-since**属性,就是上次的响应头的last-modified,这个属性的意义就是最后修改时间。服务器根据资源真实的最后修改时间和请求头的最后修改时间对比来判断是否过期,如果过期返回新资源,如果没有返回304,告诉浏览器用本地缓存。