Я пытаюсь перехватить все запросы от работника службы NGSW, чтобы проверить, все ли мои файлы кэшированы (и показать пользователю сообщение о том, что приложение готово).
Я основал свою работу на этом посте: https://stackoverflow.com/a/56067366/1381820
Процесс в деталях:
Создайте два js-файла в папке src (например, «sw-master.js» и «sw-custom.js»).
"sw-master.js" содержит:
importScripts('./ngsw-worker.js');
importScripts('./sw-custom.js');
- Зарегистрируйте два новых ресурса в файле проекта angular.json:
"assets": [
"src/assets",
"src/manifest.json",
"src/sw-master.js",
"src/sw-custom.js"
],
- Зарегистрируйте мастер-скрипт вместо «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):
Журналы, возвращаемые http-сервером (пример, показывающий количество svgs):
Есть ли хороший способ улучшить событие извлечения NGSW? и как я могу быть уверен, что все наборы загружены в моем sw-custom?