5月30日 19:58
Chrome 缓存机制有哪些?强缓存和协商缓存怎么选?
Chrome 缓存是一组从近到远的命中链路。页面请求资源时,可能先被 Service Worker 接管,再命中内存缓存或磁盘缓存;HTTP 层又分强缓存和协商缓存。强缓存看 Cache-Control: max-age,没过期就不问服务器;协商缓存会带 If-None-Match 或 If-Modified-Since 去问服务器,没变就返回 304。
追问
强缓存和协商缓存怎么取舍?
带内容 hash 的 JS、CSS、图片适合强缓存很久;HTML 入口更适合短缓存或协商缓存,避免用户一直拿旧入口。
ETag 和 Last-Modified 有什么区别?
Last-Modified 依赖修改时间,精度受构建流程影响;ETag 通常基于内容或版本生成,更精确但有计算成本。
memory cache 和 disk cache 有什么区别?
memory cache 快,通常跟当前页面生命周期相关;disk cache 更持久。开发者主要通过 HTTP 头影响策略。
Service Worker 缓存会不会覆盖 HTTP 缓存?
会,它能拦截 fetch 并决定读 Cache Storage 还是走网络。缓存策略写错会导致用户长期拿旧数据。
写段配置
httpCache-Control: public, max-age=31536000, immutable ETag: "app-v42"