Chrome 扩展中的持久 Service Worker
Chrome 扩展中的 Service Worker (SW) 本质上不是持久的,这意味着它们可以在一定时间后被浏览器强制终止不活动。对于依赖软件来拦截和修改网络请求的扩展程序来说,这可能是一个问题,特别是当请求非常耗时或用户在请求完成之前离开页面时。
解决方法
有几种解决方法可以让软件在 Chrome 扩展程序中持续运行:
-
错误漏洞利用 (Chrome 110): 调用任何异步 Chrome API 函数以使工作线程再保持活动状态 30 秒。此漏洞已被 Chromium 团队认可为一项功能,预计在可预见的未来将继续存在。
-
Offscreen API (Chrome 109 ): 创建一个离屏文档并发送每 30 秒或更短时间从它向 SW 发送一条消息。此技术利用了以下事实:在最新版本的 Chrome 中,离屏文档具有无限的生命周期。
-
NativeMessaging API (Chrome 105 ): 使用 chrome 将软件连接到本机主机进程.runtime.connectNative 函数。只要保持连接,SW就会保持活动状态。
-
WebSocket API (Chrome 116):建立 WebSocket 连接并每 25 秒或更短时间交换消息以保持活动状态。
-
Chrome Messaging API: 通过来回发送消息来 Ping 扩展程序中的另一个选项卡,从而保持SW 活着。
-
专用选项卡: 不使用 SW,而是打开一个带有扩展页面的专用选项卡,该扩展页面充当可见的背景页面。此页面可用于拦截请求并维护扩展程序的状态。
警告
仅在必要时明智地使用这些解决方法非常重要。持久性软件会消耗内存和资源,因此在不使用时应将其禁用。此外,在存储中保存和恢复扩展的状态对于防止崩溃至关重要。
以上是如何让 Service Worker 持久保留在 Chrome 扩展中?的详细内容。更多信息请关注PHP中文网其他相关文章!