【发布时间】:2019-08-10 21:45:22
【问题描述】:
我已将我的 Angular 应用程序更新为 PWA,因为我需要在第一次启动时预加载所有资产(应用程序有很多用于 UI 的图像)。 这就是为什么我想在服务工作者安装事件期间显示某种微调器/加载栏并在完成后隐藏它。 那么第一个问题 - 是否可以从组件处理此事件?
我找到了这个示例并尝试将其添加到第一个组件中,该组件在应用启动时加载,但没有得到任何日志。所以可能它不会那样工作。
ngOnInit() {
self.addEventListener('install', event => {
this.log("INSTALLING ");
const installCompleted = Promise.resolve()
.then(() => this.log("INSTALLED"));
event.waitUntil(installCompleted);
});
self.addEventListener('activate', event => {
this.log("ACTIVATING");
const activationCompleted = Promise.resolve()
.then((activationCompleted) => this.log("ACTIVATED"));
event.waitUntil(activationCompleted);
});
self.addEventListener('fetch', event => {
this.log("HTTP call intercepted - " + event.request.url);
return event.respondWith(fetch(event.request.url));
});
}
log(message) {
console.log(message);
}
我还有一个关于缓存资产的问题。在我的 ngsw-config.json 中,我正在使用下一个设置:
"name": "assets",
"installMode": "prefetch",
"updateMode": "prefetch",
"resources": {
"files": [
"/assets/**"
]
}
但是当我打开第一页时,在缓存中它不会显示 /assets 中的所有图像和文件夹。不是事件的一半。可以吗?它不应该显示所有缓存的图像吗?问题是否可能是因为我正在使用延迟加载模块并且服务工作者在加载每个模块时开始缓存? 另一方面,当我切换页面时,在网络选项卡中显示每个图像都是从服务人员加载的......
谢谢
【问题讨论】:
标签: angular service-worker progressive-web-apps angular-service-worker