这个问题最初是8月初QQ音乐现场面试的时候有问到过,当我打算流畅的从浏览器缓存策略到缓存位置大谈特谈的时候,面试官打断了我,直接问:
- 服务器怎么设置各种资源的缓存,缓存多久?
- 那如果项目已经上线还在强缓存范围内的时候页面出现bug,该怎么替换这个页面?
Q: 服务器怎么设置各种资源的缓存,缓存多久?
首先是静态资源缓存的问题:
- 如果长时间不变就设置久一点,比如很常见的是设置一年的缓存时间:
// 设置缓存时间为1年
Cache-Control: max-age=31536000
- 也可以同时开启cdn,将静态资源上传到 cdn 服务商。
- 如果经常变化的资源就:
Cache-Control: no-cache
no-cache
会在经过服务器确认后再使用缓存,换句话说就是:没有服务器的确认,任何本地缓存的版本内容都是不可信的(这个字段经常拿来和no-store对比: no-store意味着告诉浏览器不要缓存它)。</