如何避免 MV3 Chrome 扩展中同时存在多个 Service Worker?

2024-04-18

我正在将 Chrome 扩展程序从清单版本 2 (MV2) 转换为清单版本 3 (MV3)。在MV2版本中,后台页面脚本在扩展中具有突出的作用:在启动时,后台脚本从IndexedDB读取大量数据到RAM,然后(在运行期间)处理注入到页面中的内容脚本的查询用户访问的。要迁移到 MV3,MV2 后台脚本提供的功能现在需要转换为由 MV3 Service Worker 执行。

由于将数据从 IndexedDB 读取到 RAM 的速度很慢(相对而言),因此根据内容脚本的查询动态执行此操作是不可行的;相反,它必须由服务工作线程执行一次,然后保留数据,以便为来自内容脚本的传入请求提供服务。因此,Service Worker 应该是持久的(并且不会被浏览器终止);为此,至少存在一种解决方案:https://stackoverflow.com/a/66618269/4432991 https://stackoverflow.com/a/66618269/4432991

然而,在某些情况下(我无法准确指出在什么情况下),当内容脚本向 Service Worker 发送消息时,Chrome 会启动 Service Worker 的第二个副本,即使第一个副本仍在运行。活着,并且两个服务人员共存了一段时间。是否有某种方法可以避免这种情况,并确保如果服务工作人员仍然活着(在内存中),则任何活动(通过内容脚本)都不会导致创建服务工作人员的第二个副本,而是创建内容的所有请求因此,脚本将由先前存在的服务工作者处理?

谢谢你的帮助!


None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何避免 MV3 Chrome 扩展中同时存在多个 Service Worker? 的相关文章

随机推荐