【发布时间】:2020-10-16 19:38:49
【问题描述】:
我正在尝试配置 workbox-build 以创建服务工作者 (generateSW) 或将清单 (injectManifest) 注入到现有的服务工作者基于 预定义 URL 列表 而不是模式匹配,以便 preCache 上的特定资源应用加载。
不是这样的:
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"
},
...
]
当资源发生变化时,版本会在构建期间更新,以便下次加载时浏览器中的缓存失效。
提前致谢!
【问题讨论】:
标签: service-worker workbox cache-manifest sw-precache