首页 >web前端 >js教程 >如何让 Service Worker 持久保留在 Chrome 扩展中?

如何让 Service Worker 持久保留在 Chrome 扩展中?

Linda Hamilton
Linda Hamilton原创
2024-12-25 07:01:06558浏览

How Can I Keep a Service Worker Persistent in a Chrome Extension?

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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn