强缓存和协商缓存
协商缓存 (没有强缓存或者强缓存过期)
协商缓存是浏览器判断资源是否可用,所以需要两个标识,reponse header 响应头带上某个字段(Last-Modified或者Etag),request header(If-Modified-Since或者If-None-Match)
Last-modified 资源在服务器的最后修改时间
If-Modified-Since 向服务器发送资源的最后修改时间
只要发生变化,内容不变,也会重新返回最新资源(因为是按文件最后修改时间计算的,并没有把内容考虑进去)
有时Expires和Last-modified一起使用(服务器时钟不一致)
Last-Modified和Etag区别:前者只能精确到1s,后者可以到0.1s Etag内容发生变化,才会变化 Last-Modified前者时间变化就认为变化
F5刷新有效 ctrl+r有效
ctrl F5无效 ctrl+shift+r无效
强缓存 (本地缓存)
cache-control(优先级高于后者,以客户端为准相对时间)max-age Expires(http1.0老的标准,以服务端为准绝对时间,不稳定)