service worker 是什么——以及它怎么会卡住
service worker 是网站装进浏览器的一段脚本,用于离线工作、显示通知,并让重复访问加载更快——可安装 Web 应用背后的技术就是它。与普通页面脚本不同,它不依附于任何标签页运行,能在浏览器重启后存活,还会拦截网站的网络请求并从自己的 CacheStorage 应答。这个拦截机制正是它的价值所在——也是故障点:一旦网站发布了有问题的更新,旧 worker 就可能永远分发过期资源包。
典型症状一眼即知:网站死死停在上个月的版式上;“有新版本可用——请刷新”的无限循环;其他一切正常加载、唯独 Web 应用坚称自己离线;或者磁盘空间被 Web 应用数据悄悄吃掉——重度使用 PWA 时,Service Worker 文件夹会长到几百兆以上。删除是安全的:下次访问时网站会干净地重新注册一个 worker。
- chrome://serviceworker-internals——完整注册表,每个 worker 旁都有 Unregister 按钮
- DevTools(F12)→ 应用 → Service workers → Unregister——在网站于标签页中打开时使用
- DevTools → 应用 → 存储 → Clear site data——一键清除 worker 外加缓存、Cookie、IndexedDB 和本地存储
- chrome://settings/content/all——搜索网站,通过网站设置删除其数据
- Ctrl+Shift+Del 勾选“Cookie 及其他网站数据”和“缓存的图片和文件”,时间范围选“时间不限”——批量删除
逐步删除 worker 及其存储
在地址栏输入 chrome://serviceworker-internals。页面会列出此配置文件下的全部注册项:源、worker 版本、运行状态。找到目标网站——页面搜索(Ctrl+F)能帮上忙——在其所在行点击 Unregister;正在运行的 worker 可以先用 Stop 停止,不过 Unregister 本身两种情况都有效。关闭该网站的标签页,重新打开并用 Ctrl+F5 强制刷新:没有 worker 拦截,页面会直接来自网络。
要把磁盘上的残留也清掉,请打开网站,按 F12,进入“应用”标签页,在“存储”下点击 Clear site data——一次性移除 worker 的缓存、网站的 Cookie、IndexedDB 和本地存储。整个配置文件的手动路线:完全退出 Chrome(菜单 → 退出,后台应用可能让它继续存活),然后删除 %LOCALAPPDATA%\Google\Chrome\User Data\Default\Service Worker 的内容。Chrome 会重建空文件夹,网站也会按需重新注册 worker。
什么时候该删除——以及如何防止复发
只要单个网站出现普通刷新救不了的异常,先注销 worker、再问缘由。至于全面重置——借来的电脑、移交家人的浏览器——“时间不限”的清除对话框加上网站设置的巡查,能成批移除 worker 和存储。还要记得:每个已安装的 PWA 都自带专属 worker 和存储,装的 Web 应用越多,这类数据就积得越多。
并不存在全局禁用 service worker 的开关,也用不着——它们是现代 Web 的正常组成部分。有效的是定期保洁:给真正在用的 Web 应用偶尔来一次 Clear storage,卸载不再打开的 PWA。Kleaner PRO 的浏览器清理会在常规缓存之外一并覆盖 service worker 存储,文件夹便不会在两次手动清理之间悄悄长回 GB 级。
常见问题与解答
Chrome 的 service worker 存储在磁盘的哪里?
在 %LOCALAPPDATA%\Google\Chrome\User Data\<配置文件>\Service Worker——含 CacheStorage、ScriptCache 和 Database 子文件夹。在 Chrome 关闭时删除其内容是安全的。
DevTools 里的 Clear site data 会删除什么?
该网站的 service worker 注册,外加缓存存储、Cookie、IndexedDB 和本地存储——相当于对该源执行一次恢复出厂。
网站更新后为什么还显示旧版本?
它的 service worker 仍在分发之前缓存的副本。通过 chrome://serviceworker-internals 注销该 worker,然后刷新页面即可。
继续阅读
联系我们: [email protected]