2017-01-20 6 views
3

Я бы хотел использовать двух сервисных работников на моем сайте: один для предоставления классического автономного кеша (/sw.js) для моего PWA и другого для чего-то вроде локального «сервера» базы данных, который использует фон синхронизация и нажатие (/sw-db.js). Поскольку последний имеет тенденцию выполнять тяжелую работу (блокируя цикл событий на несколько мс), лучше оставить его отдельным.Два сотрудника по обслуживанию в то же время

Поскольку база данных sw не используется для запросов на выборку, я бы дал ей область фиктивной ошибки, тогда как sw.js имеет область действия для всего домена.

ли первый, который отвечает на «выборку» событие, также служит коду/URL для /sw-db.js (держа его несколько в синхронизации с обновлениями сайта) или являются сервисными работниками всегда обновляемых через сеть.

ответ

1

URL-адрес, который вы передаете в navigatior.serviceWorker.register('/path/to/sw.js'), всегда будет выбран в обход любых других работников службы, когда придет время проверить наличие обновлений. Поэтому, чтобы ответить на ваш вопрос, обработчик fetch другого обслуживающего персонала не будет запущен.

HTTP cache does come into play всякий раз, когда есть проверка обновлений для сценария рабочего стола. Поэтому вы должны убедиться, что вы настраиваете заголовки управления кешем HTTP для вашего варианта использования.

Обычно проверка обновления рабочего персонала запускается из-за перехода на страницу, контролируемую рабочим сервисом, но если у вас есть рабочий службы с «фиктивной» областью, он не будет контролировать какие-либо страницы. При этом, когда обработчики обработчиков sync или push событий также вызывают запуск проверки обновлений. Я не уверен, что каждый sync или push запускает чек или просто подмножество из них, например те, которые вызывают появление нового сервисного работника. Но это произойдет хотя бы некоторое время.