html5 appcache 已被废弃,应迁移到 service worker;因其存在缓存更新不透明、单点故障、全量更新、网络判断僵硬等严重缺陷,且 manifest 文件需严格遵循格式与响应头要求。

HTML5 的离线应用缓存(Application Cache,简称 AppCache)已被现代浏览器废弃(自 Chrome 94、Firefox 89 起默认禁用,后续版本彻底移除),不应在新项目中使用。它已被更可靠、更灵活的 Service Worker + Cache API 取代。
为什么不再推荐写 manifest 文件
AppCache 存在严重设计缺陷:缓存更新机制不透明、单点故障风险高、资源必须全量更新、对网络状态判断僵硬(比如“在线但某资源 404”仍强制离线)、难以调试。很多看似“成功”的 manifest 实际导致白屏或旧版资源长期滞留。
manifest 文件的基本结构(仅作历史了解)
若需维护遗留系统,manifest 文件(通常命名为 cache.manifest)是纯文本,以 CACHE MANIFEST 开头,分三段:
- CACHE: 列出默认缓存的资源(HTML/CSS/JS/图片等),路径相对或绝对
-
NETWORK: 列出**永远不缓存、必须联网获取**的资源(如 API 接口、统计脚本),可用通配符
* -
FALLBACK: 指定离线时的备用资源(如
/ /offline.html)
示例 cache.manifest:
# v1.2 — 修改此行可强制更新缓存
CACHE:
/index.html
/style.css
/app.js
/logo.png
NETWORK:
/api/
/analytics.js
FALLBACK:
/ /offline.html
关键注意事项(如果必须用)
- 文件必须以
CACHE MANIFEST开头,且响应头需为Content-Type: text/cache-manifest - HTML 页面需添加
属性 - 浏览器只在 manifest 文件内容(含注释)发生字节级变化时才检查更新——改资源本身不会触发更新
- 首次加载后,页面会使用缓存;后续访问即使网络正常,也优先用缓存,除非 manifest 改变
- 更新流程异步:新 manifest 下载 → 新资源下载 →
updateready事件 → 需手动swapCache()才生效
请立即迁移到 Service Worker
用 Service Worker 可精确控制缓存策略(缓存优先、网络优先、Stale-while-revalidate 等),支持增量更新、运行时拦截、后台同步,并与 Push API、Background Sync 等现代能力集成。
最小可行示例:
注册 SW(main.js):
if ('serviceWorker' in navigator) {
navigator.serviceWorker.register('/sw.js');
}
在 sw.js 中监听 install 和 fetch 事件,用 caches.open() 和 cache.addAll() 缓存核心资源。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











