我正在尝试拦截NGSW服务人员的所有请求,以检查我的所有文件是否都已缓存(并向用户显示一条消息,指出该应用已准备就绪)。
我的工作基于该帖子:https://stackoverflow.com/a/56067366/1381820
详细过程:
在src文件夹中创建两个js文件(例如“ sw-master.js”和“ sw-custom.js”)。
“ sw-master.js”包含:
importScripts('./ngsw-worker.js');
importScripts('./sw-custom.js');
"assets": [
"src/assets",
"src/manifest.json",
"src/sw-master.js",
"src/sw-custom.js"
],
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中获取?