Ожидание события загрузки окна для регистрации работника службы - PullRequest
0 голосов
/ 07 декабря 2018

Я наткнулся на этот фрагмент в Документация Google Workbox :

<script>
// Check that service workers are registered
if ('serviceWorker' in navigator) {
  // Use the window load event to keep the page load performant
  window.addEventListener('load', () => {
    navigator.serviceWorker.register('/sw.js');
  });
}
</script>

Как именно загрузка страницы становится менее производительной без обработчика событий окна load?

ВРазве для сервисного работника обычно предпочтительнее как можно раньше подключиться, поскольку одним из основных его применений в PWA является кэширование?

Ответы [ 3 ]

0 голосов
/ 08 декабря 2018

Обратите внимание, что сервисный работник - это не просто некоторые JS-файлы, загружаемые как часть вашего веб-приложения.Это также реализация браузера как API .Код SW JS в вашем веб-приложении будет взаимодействовать с реализацией SW вашего браузера для кэширования файлов, загруженных до / после загрузки файла SW JS.Последовательность или время загрузки файла в каком порядке не имеет значения, когда речь заходит о возможности кэширования ПО.

По этой причине браузеры без поддержки SW не будут кэшироваться, даже если ваше веб-приложение совместимо с PWA.

0 голосов
/ 08 декабря 2018

Сервисные работники загружаются в фоновом режиме из основного потока, но они по-прежнему потребляют ресурсы компьютера и, при предварительном кэшировании, сетевые ресурсы.Если для рендеринга текущей страницы рендеринга требуется 500 КБ, а вы хотите предварительно кэшировать страницу, чтобы она полностью работала в автономном режиме, работнику службы также придется загрузить эти 500 КБ.Это конкурирует с отображаемой текущей страницей, поэтому рекомендуется отложить регистрацию работника службы до тех пор, пока текущая страница не будет готова для пользователя.

Подробнее о регистрации работника службы можно прочитать на основы Интернета .

0 голосов
/ 07 декабря 2018

Это не значит, что блокировка с помощью прослушивателя событий загрузки.

вам все равно нужно загрузить все ресурсы, а сервисный работник впоследствии сохранит их в браузере.

при следующем посещении приложения пользователем,работник службы уже там.Готов к доставке ресурсов из кэша браузера.

работник службы не работает с основным потоком.

...