问题描述
我不想为所有用户预缓存,而只想为成员预缓存。我想这样做是为了避免服务器上不必要的负载以及为一次性访问者进行不必要的缓存。
所以当访问者登录时,我向服务工作者发送消息。在服务工作者的以下代码段中,“收到的消息”记录在控制台中。但是图像没有被缓存。并且没有错误信息。
如果我直接将 precacheAndRoute(images)
放在 const images = [....];
下方,那么图像会被正确缓存。
我是 Service Worker 的新手。非常感谢任何帮助。
const images = [....];
addEventListener('message',(event) => {
if (event.data.type === 'cacheImages') {
console.log('Message Received');
precacheAndRoute(images);
}
});
解决方法
precaching works in Workbox 的方式是在 Service Worker 处于 installed
时缓存文件。
您在 SW 中的事件内调用 precacheAndRoute
,SW 已安装,然后不会执行 precacheAndRoute。
您可能也想查看 image cache recipe。