2016-02-25 1 views
4

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

Например, загружая контролируемую страницу обслуживания уборщица, таких как https://airhorner.com/ или https://wiki-offline.jakearchibald.com/, настройка сети в «автономном режиме» в Devtools, а затем жесткий перезагрузки страницы приводит к разбитым «нет подключения к Интернету» страницы. (Регулярная перезагрузка показывает кэшированную страницу, как ожидалось.)

Есть ли способ предотвратить это или использовать сервисного работника в качестве резерва в случае, если устройство находится в автономном режиме?

ответ

7

Это поведение явно окликнул как часть service worker specification:

navigator.serviceWorker.controller возвращает нулевое значение, если запрос является сила обновления (сдвиг + обновления). Объекты ServiceWorker, возвращенные с , используют этот атрибут getter, который представляет одного и того же работника службы, это одинаковых объектов.

Так что это не просто деталь реализации браузера.

Если вы считаете, что существует сильная причина, по которой работник службы не должен вести себя таким образом, лучший подход заключается в том, чтобы выявить ваши проблемы в спецификации issue tracker.