HTML5 manifest 已被废弃,Chrome 94、Firefox 92、Edge 93 等移除,Safari 早于 2018 年停用;现标准方案是 Service Worker + Cache API,具备灵活缓存控制、运行时干预和细粒度策略能力。

HTML5 的 manifest 属性已被现代浏览器废弃,不再推荐用于构建离线应用。它在 Chrome 94、Firefox 92、Edge 93 等版本中已被完全移除,Safari 早在 2018 年就停止支持。当前标准方案是使用 Service Worker + Cache API。
Manifest 文件的原始结构(仅作历史参考)
过去通过 声明,manifest 文件为纯文本,以 CACHE MANIFEST 开头,分三段:
- CACHE: 列出必须缓存的资源(HTML、CSS、JS、图片等),相对路径或绝对路径均可
-
NETWORK: 列出始终需联网获取的资源(如 API 接口、动态内容),可用通配符
* -
FALLBACK: 定义离线时的备用资源,格式为
online-path fallback-path(例如/ /offline.html)
为什么 Manifest 被淘汰
该机制存在根本性局限:
- 缓存更新不灵活:仅当 manifest 文件内容字节变化时才触发更新,且更新发生在下次页面加载,用户无法控制时机
- 无运行时干预能力:无法按条件缓存、无法处理请求失败、无法区分不同用户状态
- 缓存粒度粗:整个页面依赖一个清单,难以做增量更新或按路由分离缓存
- 与 HTTPS 强绑定但缺乏精细权限模型,安全性与可维护性不足
替代方案:Service Worker 标准实践
用 JavaScript 控制缓存生命周期,实现精准、可控、可调试的离线策略:
立即学习“前端免费学习笔记(深入)”;
- 注册 SW:
navigator.serviceWorker.register('sw.js')(需 HTTPS 或 localhost) - 在
install事件中预缓存核心静态资源 - 在
fetch事件中拦截请求,按需返回缓存/网络/混合响应(如 Cache First、Network First、Stale-While-Revalidate) - 配合
workbox库可简化常用策略,自动生成 precache 清单并处理版本更新
迁移建议与注意事项
若维护旧项目,应尽快替换 manifest 逻辑:
- 删除
manifest属性和所有 .manifest 文件 - 将原 CACHE 列表资源迁入 Service Worker 的
precacheAndRoute()或手动cache.addAll() - 原 NETWORK 规则转为 fetch 事件中的
event.request.url.includes('api/') ? fetch(event.request) : … - 原 FALLBACK 映射改写为 fetch 中的兜底逻辑,例如
cache.match('/offline.html') - 利用
skipWaiting()和clients.claim()实现热更新,避免旧 SW 长期驻留



















