浏览器分为协商缓存和强制缓存
强制缓存
强制缓存在请求头上 在HTTP1.0中使用Expires 在HTTP1.1中使用Cache-Control 都存在时Cache-Control为主
过程:发起请求 ---- 浏览器根据Expires和Cache-Control判断资源是否命中"强制缓存" ---- 命中则直接缓存取资源,不请求服务器
Cache-control主要取值为:
- public:所有内容都被缓存,客户端和代理服务器也缓存
- private:所有内容只有客户端缓存(此项为Cache-control的默认值)
- no-cache:客户端缓存内容,但是是否缓存需要协商缓存验证决定
- no-store:所有内容都不会被缓存,既不强制也不协商
- max-age=xxx:缓存内容将xxx秒后失效
- must-revalidate: 强制浏览器严格遵守你设置的cache规则
- proxy-revalidate: 强制proxy严格遵守你设置的cache规则
协商缓存
强制缓存失效 ---- 触发协商缓存 ---- 客户端携带协商缓存标识向服务器发起请求 ---- 在服务器决定缓存标识是否有效
出现两种情况
- 协商缓存生效,返回304
- 协商缓存失效,返回200和结果