核心是为带哈希的静态资源(JS/CSS/图片)配置Cache-Control: public, max-age=31536000实现强缓存,HTML等动态资源设no-cache或短缓存,并通过DevTools验证响应头与缓存命中状态。

核心是让浏览器“记住”哪些文件不用再下载——静态资源(JS、CSS、图片)一旦加载过,就该直接从本地读取,而不是每次打开页面都重新请求。
配置强缓存头,让资源长期驻留
对构建后带哈希值的文件(如 app.a1b2c3.js、style.f4e5d6.css),服务端应返回:
- Cache-Control: public, max-age=31536000(一年),优先级高于 Expires
- 确保文件名含内容哈希,内容变则文件名变,避免旧缓存覆盖新逻辑
- 第三方库(React、Vue、Lodash)单独打包并设同样长缓存,复用率更高
区分动静,避免缓存误伤
不是所有资源都适合强缓存:
- HTML 文件通常不设 long-term 缓存,或设 Cache-Control: no-cache,靠 ETag 协商更新
- index.html 可配 Cache-Control: no-store 或极短 max-age,防止 HTML 更新后 JS 还在用旧版本
- 带查询参数的资源(如 logo.png?v=2)需确保参数稳定,否则破坏缓存键
配合 Service Worker 实现更可控的缓存
当需要离线支持或精细策略时,Service Worker 可主动接管请求:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
立即学习“Java免费学习笔记(深入)”;
- 安装阶段预缓存核心 JS/CSS/首页 HTML
- 对静态资源采用 Cache-First:先查缓存,命中则立即返回,不发网络请求
- 对 HTML 等动态入口可用 Stale-While-Revalidate:先返回旧版,后台静默更新缓存
验证与维护缓存是否生效
别只靠配置,要实际确认:
- Chrome DevTools → Network 标签页,看静态资源响应头是否有 Cache-Control,状态码是否为 200 (from memory cache) 或 200 (from disk cache)
- 修改 JS 后重新构建,检查新哈希文件是否被加载,旧文件是否不再出现
- 清空浏览器缓存后首次访问,观察关键资源是否进入缓存;刷新后确认它们是否跳过网络请求
不复杂但容易忽略。关键是把缓存当作部署流程的一环,而非仅靠开发时写个 meta 标签。

















