响应头里的Expires和Cache-Control
Expires(优先级低)
浏览器再次加载资源时,如果在这个过期时间(以分钟为单位)内,则命中强缓存
Cache-Control(优先级高)
max-six:假如值设为300,则在5分钟内再次请求资源则命中强缓存
no-store:禁止浏览器缓存数据
public:可以被所有的用户缓存,包括终端用户和CDN等中间代理服务器对其缓存
private:只能被终端用户的浏览器缓存,不允许CDN等中间代理服务器对其缓存
no-cache:使用协商缓存,与服务器确认响应是否被更改,两种形式:
1)Last-Modifry/If-Modify-Since:浏览器第一次请求一个资源的时候,服务器返回的header中会加上Last-Modify ,Last-modify是一个时间标识该资源的最后修改时间;当浏览器再次请求该资源时,request的请求头中会包含If-Modify-Since,该值为缓存之前返回的Last-Modify。服务器收到If-Modify-Since后,根据资源的最后修改时间判断是否命中缓存。
2)EtagEtag/If-None-Match:服务器响应请求时,告诉浏览器当前资源在服务器的唯一标识(对资源的hash值)。发现资源具有Etag声明,浏览器再次向服务器请求时带上If-None-Match(Etag的值)。web服务器收到请求后发现有If-None-Match则与被请求资源的相应校验串进行比对,决定是否命中协商缓存。