当我们第一次访问某个页面时,我们会获取这个页面的静态资源文件并把他保存在本地磁盘;这种缓存分为两种,强缓存 和 协商缓存
当浏览器第2/n次访问时,会去本地磁盘判断 根据第一次的response header中的cache-control是强还是协商,如果是no-cache:不使用强缓存,每次都用协商缓存;
max-age=3600:3600有效期;
no-store:直接禁止浏览器缓存,每次都请求服务器;
public:可以被所有用户缓存;
private:只能被终端用户的浏览器缓存。
以上判断出了,且没过期,就是强缓存,过期就是协商缓存 :
request header携带If-Modify-Since和If-none-match, 值为第一次服务器返回的response header中的Last-Modify和eTag。
If-Modify-Since被服务端判断对比,(服务端最后一次更新资源时间会被记录,对比两个时间如果相等,返回304,拿协商缓存。如果不等,返回200和新数据。
If-Modify-Since ( request header
If-none-match ( request header
Last-Modify( response header
ETag ( response header 作为唯一标识可以与内容对比,服务器会优先验证Etag,一致的情况下才会对比Last-Modify