1

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

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

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

谢谢你的帮助!

4

0 回答 0