强缓存 和 协商缓存 

84 阅读1分钟

当我们第一次访问某个页面时,我们会获取这个页面的静态资源文件并把他保存在本地磁盘;这种缓存分为两种,强缓存 和 协商缓存 

当浏览器第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