【发布时间】:2020-06-14 16:24:11
【问题描述】:
我可以在“安装”事件的waitUntil 工作流之外将项目添加到我的 Service Worker 缓存吗?如果这样做会发生什么?这是个坏主意吗?
我有一个单页应用程序,我想在 Service Worker 安装后立即缓存应用程序的主要组件和资产,然后延迟缓存用户可能无法访问的一些辅助页面。如果没有服务人员,我将动态导入这些辅助资产,因此用户无需在首次加载时下载它们。
我目前在做的是这样的:
self.addEventListener("install", e => {
e.waitUntil(
(async () => {
const cache = await caches.open(cacheName);
return cache.addAll(appShell);
})()
);
caches.open(cacheName).then(cache => {
return cache.addAll(secondaryPages);
});
});
secondaryPages 正在被 SW 缓存,但我不确定这是否是最好的方法。我希望上面的代码会说“在缓存 appShell 之前不要完成安装,但不要等待secondaryPages”。
这是否给了我正在寻找的延迟性能提升,或者我应该稍后将secondaryPages 添加到缓存中,比如在客户端加载内容后从应用程序触发的消息事件?
【问题讨论】: