我正在使用workbox 2.1.0来生成服务工作者,需要从服务器的assets目录(比如index.html和clear.png)和CDN中的一个文件中预先缓存一些文件(比如https://akamai.com/dummy/path/app.js )。 我正在使用gulp进行建设。这就是代码的用法
gulp.task('sw', () => {
return wbBuild.generateSW({
globDirectory: '.',
swDest: 'sw_gulp_generated.js',
staticFileGlobs: [
'index.html',
'clear.png'
],
verbose: true,
})
.then(() => {
console.log('Service worker generated.');
})
.catch((err) => {
console.log('[ERROR] This happened: ' + err);
});
});
所以,这样工作正常,生成的服务工作者将这两个文件都放在预先缓存列表中,在这里:
const fileManifest = [
{
"url": "index.html",
"revision": "b6eb7cd7599ed6584a715cdfc75a81c0"
},
{
"url": "clear.png",
"revision": "e17de36d2c2ddf7b068892fa4678cd31"
},
];
const workboxSW = new self.WorkboxSW();
workboxSW.precache(fileManifest);
//more code follows ...
我经过测试,效果很好
现在,问题:如何在预缓存列表中添加第三个资产(https://akamai.com/dummy/path/app.js)。我尝试将其放入staticFileGlobs
,但错误地说:
One of the glob patterns doesn't match any files
显然是因为它试图在globDirectory
中找到文件https://akamai.com/dummy/path/app.js并且无法找到它。
所以,基本上,在使用gulp(或任何构建工具)时,如何在生成的服务工作者的预先缓存列表中注入CDN URL?
答案 0 :(得分:0)
generateSW看起来不接受自定义select box, Location
from #tempX
where box in (select Box from #tempX group by Box having count(Box) > 1)
order by box, Location
规则。您可以传递runtimeCaching选项。如果客户端请求第三方文件,它只会缓存第三方文件。由于如果请求导致错误响应,它就是第三方请求,则会缓存错误响应并not updated。
precache