2015-01-21 5 views
6

На приведенном ниже рисунке показано, что установлены два рабочих - один активный, а другой неактивен (только что установлен).Как остановить старых работников службы поддержки?

two service workers running

  1. Зарегистрировать службы работника
  2. Вносить изменения в service-worker.js и перезагрузите страницу.
  3. Логика заключается в том, что сервис-работники проверяют двоичную разницу и обновляют версии рабочих.

Таким образом, новый сервисный работник создается с новым идентификатором версии. Но почему старый работает? и как его закрыть?

sw.js здесь https://gist.github.com/boopathi/57b7e8b6d657d55bdc7d

ответ

9

По умолчанию, пока все вкладки, которые имеют страницы контролируемые что старый работник службы закрыты/порожнее, старый работник службы останется работать. Новый сервисный работник будет, ну, «ждать» в «ожидающем» состоянии.

Есть варианты, которые изменяют это поведение по умолчанию. Это skipWaiting() и clients.claim().

Когда skipWaiting() вызывается у установочного работника службы, он, ну, пропускает состояние ожидания и немедленно активируется. Тем не менее, он не обязательно будет контролировать страницы, несмотря на то, что активирован - вот что будет делать clients.claim().

+0

'skipWaiting()' и 'clients.claim()', похоже, не вызывает событие changechange. Я сейчас смотрю курс о SW - https://classroom.udacity.com/courses/ud899/, и я обнаружил, что в настоящее время единственным вариантом является покинуть страницу, а затем вернуться. SkipWaiting не работает для меня –

+0

Но похоже, что он работал около 12/2015 –