HTML5离线缓存(AppCache)已废弃,删除需三步:移除HTML中manifest属性、服务器停止响应.manifest请求、开发者工具中清除Application Cache;若用Service Worker则需调用cache.delete()等API。

HTML5离线缓存怎么删?先看它还在不在
HTML5离线缓存(Application Cache,简称 AppCache)在现代浏览器中已被废弃,Chrome 95+、Firefox 85+、Safari 16.4+ 都已彻底移除支持。所以你遇到的“删不掉”,大概率是以下情况之一:缓存没被正确更新、页面仍引用了 manifest 文件、或误把 Service Worker 缓存当成了 AppCache。
检查是否真在用 AppCache
打开开发者工具(F12),切换到 Application 标签页,左侧看是否有 Manifest 或 Application Cache 区域。如果完全没这个选项,说明浏览器压根不支持或没启用——不用删。
如果还存在,检查页面 标签是否带 manifest 属性:
只要这个属性还存在,且服务器能返回合法的 app.manifest 文件(MIME 类型必须是 text/cache-manifest),浏览器就可能尝试加载并缓存。
立即学习“前端免费学习笔记(深入)”;
彻底清除 AppCache 的实操步骤
AppCache 不能用 JavaScript 主动清空,只能靠浏览器机制和手动干预:
- 删除 HTML 中的
manifest属性,并确保服务器不再响应任何.manifest请求(返回 404 或 410) - 修改
manifest文件内容(哪怕只加一个空格),触发浏览器重新下载并更新缓存;旧缓存会在新版本激活后自动废弃 - 在开发者工具 > Application > Manifest 页面,点击
Clear storage或类似按钮(Chrome 中叫Clear site data,勾选Application cache) - 强制刷新页面时按住
Shift(或Ctrl+F5),跳过所有缓存层
别混淆:Service Worker 缓存不是 AppCache
如果你用的是 navigator.serviceWorker.register(),那操作对象完全不同。AppCache 是声明式、全局、粗粒度的;Service Worker 是编程式、可精细控制、需手动 cache.delete() 或 clients.claim() 等逻辑清理。
常见误判点:
- 看到
Application面板里有Cache Storage,就以为是 AppCache —— 实际是 Service Worker 的caches.open()创建的 - 执行了
window.applicationCache.abort()却没效果 —— 这个 API 已无效,调用也不报错,只是静默忽略 - 以为删了
app.manifest文件就万事大吉 —— 若用户本地已有缓存,且 HTML 仍带manifest属性,浏览器会继续尝试加载(即使 404),并沿用旧缓存
真正要删干净,得同时处理 HTML 引用、服务端响应、开发者工具里的残留项——三者缺一不可。尤其容易漏掉的是服务器端对 .manifest 路径的遗留配置。











