Как избежать одновременной работы нескольких сервис-воркеров в расширении MV3 Chrome?
Я занимаюсь преобразованием расширения Chrome из манифеста версии 2 (MV2) в манифест версии 3 (MV3). В версии MV2 скрипт фоновой страницы играет важную роль в расширении: при запуске фоновый скрипт считывает большой объем данных из IndexedDB в ОЗУ, а затем (во время работы) обрабатывает запросы из скриптов контента, введенных в страницы. что пользователь посещает. Чтобы перейти на MV3, функциональность, предоставляемая фоновым скриптом MV2, теперь должна быть переведена для выполнения работником службы MV3.
Поскольку чтение данных из IndexedDB в ОЗУ происходит медленно (условно говоря), невозможно сделать это динамически по запросу из сценария содержимого; скорее, сервис-воркер должен его выполнить только один раз, а затем данные будут храниться для обслуживания входящих запросов из сценариев содержимого. Таким образом, сервис-воркер должен быть постоянным (и не прекращаться браузером); для этого существует как минимум одно решение: /questions/56859216/postoyannyij-servis-vorker-v-rasshirenii-chrome/56871582#56871582
Однако в некоторых случаях (мне не удалось точно определить, при каких обстоятельствах), когда сценарий содержимого отправляет сообщение работнику службы, Chrome запускает вторую копию работника службы, даже если первая еще работает. живы, и два обслуживающего работника сосуществуют некоторое время. Есть ли способ избежать этого и убедиться, что, если сервисный воркер все еще жив (в памяти), никакая активность (по сценариям содержимого) не приведет к созданию второй копии сервисного воркера, а, скорее, всех запросов контента Таким образом, скрипты будут обрабатываться существующим ранее сервис-воркером?
Спасибо за любую помощь!