Обновление сервисных работников в одностраничных веб-приложениях
Я работаю над одностраничным веб-приложением и внедряю сервисных работников. Я узнал, что мне нужно вручную обновить работника службы, потому что одностраничное приложение не имеет традиционных событий навигации, однако мне неясно, какие роли clients.claim()
а также self.skipWaiting()
,
Нужно ли вызывать эти функции после ручного обновления работника сервиса? я видел skipWaiting()
называется в install
событие и claim()
называется в activate
обработчик события. Если мне нужно одно или оба из них, это правильные места, чтобы сделать эти звонки?
1 ответ
clients.claim()
обычно вызывается в событии установки, чтобы получить контроль над неконтролируемыми клиентами после активации сервисного работника.
Это действительно имеет значение только при самой первой загрузке, и благодаря прогрессивному улучшению страница, как правило, без проблем работает без обслуживающего персонала.
За skipWaiting()
это заставляет вашего работника службы выгнать текущего активного работника и активировать себя, как только он входит в фазу ожидания (или сразу, если он уже находится в фазе ожидания). Это не заставит вашего работника пропустить установку, просто ждет. Довольно часто это называют в install
событие.
Это должно быть вызвано при обновлении работника сервиса.
Для получения дополнительной информации вы можете проверить документацию жизненного цикла работника сервиса.