Улучшение углового ngsw сервисного работника - PullRequest
1 голос
/ 04 июля 2019

Я пытаюсь перехватить все запросы от работника службы NGSW, чтобы проверить, все ли мои файлы кэшированы (и показать пользователю сообщение о том, что приложение готово).

Я основал свою работу на этом посте: https://stackoverflow.com/a/56067366/1381820

Процесс в деталях:

  1. Создайте два js-файла в папке src (например, «sw-master.js» и «sw-custom.js»).

  2. "sw-master.js" содержит:

importScripts('./ngsw-worker.js');
importScripts('./sw-custom.js');
  1. Зарегистрируйте два новых ресурса в файле проекта angular.json:
"assets": [
  "src/assets",
  "src/manifest.json",
  "src/sw-master.js",
  "src/sw-custom.js"
],
  1. Зарегистрируйте мастер-скрипт вместо «ngsw-worker.js» в «app.module.ts»:
ServiceWorkerModule.register('/sw-master.js');

Мой sw-custom.js выглядит так:

console.log('Hello from sw-custom.js');

self.addEventListener('fetch', event => {
    console.log("[SW] HTTP call intercepted - " + event.request.url);
    return event.respondWith(fetch(event.request.url));
});

Первый главный пункт : событие извлечения может использоваться только один раз. Для получения логов необходимо изменить порядок импорта скриптов в файл sw-master.js.

Моя проблема : журналы консоли не возвращают все ресурсы, когда журналы http-сервера возвращают все:

Журналы возвращаются по событию выборки (пример показывает только один svg):

enter image description here

Журналы, возвращаемые http-сервером (пример, показывающий количество svgs):

enter image description here

Есть ли хороший способ улучшить событие извлечения NGSW? и как я могу быть уверен, что все наборы загружены в моем sw-custom?

...