我正在尝试配置workbox-build以创建服务工作者(generateSW )或根据预定义的 URL 列表而不是模式匹配向现有服务工作者注入清单(injectManifest ),以便在应用程序加载时预缓存特定资源.
不是这样的:
const { generateSW } = require('workbox-build');
const swDest = 'app/cache-sw.js';
generateSW({
globDirectory: "app/",
globPatterns: [
"**/*.{html,js,png,css,json,txt,ico,config}"
]
swDest
}).then(({ count, size }) => {
console.log(`Generated ${swDest}, which will precache ${count} files, totaling ${size} bytes.`);
});
但像这样:
const { generateSW } = require('workbox-build');
const swDest = 'app/cache-sw.js';
generateSW({
globDirectory: "app/",
manifestURLs: [
"/index.html",
"/favicon.ico",
"/info.txt",
...
],
swDest
}).then(({ count, size }) => {
console.log(`Generated ${swDest}, which will precache ${count} files, totaling ${size} bytes.`);
});
这样自动生成的 service worker 就会包含一个类似这样的清单:
[
{
"url": "/index.html",
"revision": "487659b6e9c542e7cd8227e0e9d0bed1"
},
{
"url": "/favicon.ico",
"revision": "29459c5d9c542e7cd8227e0e9d0if83"
},
{
"url": "/info.txt",
"revision": "73932c5d9c542e7cd8227e0e9z7el19"
},
...
]
并且在构建期间资源更改时会更新修订,以便下次加载时浏览器中的缓存无效。
提前致谢!