浏览器的缓存分为强缓存和协商缓存
1、强缓存
定义:不会向服务器发送请求,直接送浏览器中读取缓存
可向请求头设置一下几种属性:
-
Expires: 缓存过期时间,单位秒,用来指定资源到期时间 服务器的时间
-
Cache-Control: 用于控制网页缓存
eg: Cache-Control : max-age=300 表示正确请求时间的5分钟内会命中强缓存
可设置值如下:
public:所有内容都会被缓存
private:所有被融只有客户端缓存
no-cache:客户端缓存,是否使用缓存需要协商缓存判断
no-store:所有内容不会被缓存
max-age:单位秒,max-age=300 表示缓存内容会在300秒后失效
s-maxage:与max-age类似,只在代理服务器中生效(CDN加速),如果存在代理服务器,s-maxage优先级高于max-age
max-stale: 能容忍的最大过期时间。max-stale指令表示客户端愿意接受一个已经过期的响应,如果指定了max-stale的值,则最大容忍时间为对应的秒数,如果没指定 表示愿意接受任意时间
min-fresh:能容忍的最小新鲜度 -
Expires与Cache-Control比较
Expires产生于Http1.0
Cache-Control产生于Http1.1
两者同时存在 Cache-Control优先级高于Expires
2、协商缓存
强缓存失效以后,有客户端携带缓存标识, 服务器端判断是否使用缓存
- Last-Modified 和 If-Modified-Since
浏览器下一次请求时,如果Last-Modified存在,Last-Modified === If-Modified-Since 则使用缓存 - Etag
资源唯一标识符 服务器端判断资源是否被更改 未更改则使用缓存 - Etag与Last-Modified比较
Etag优先级高于Last-Modified
网友评论