有许多例子在那里初始化服务工作者类似于下面的一个缓存:服务工作者与多个缓存
let cacheName = 'myCacheName-v1';
let urlsToCache = ['url1', 'url2', url3'];
self.addEventListener('install', function (event) {
event.waitUntil(
caches.open(cacheName).then(function (cache) {
return cache.addAll(urlsToCache);
}).then(function() {
return this.skipWaiting();
})
);
});
我想对我的服务人员初始化多个缓存。动机是通过其变化趋势对资产进行分组(例如,静态应用数据与CSS,JavaScript等)。有了多个缓存,我可以更新个别缓存(通过版本缓存名称),因为缓存内的文件会发生更改。理想情况下,我希望建立类似于下面的结构:
let appCaches = [{
name: 'core-00001',
urls: [
'./',
'./index.html', etc...
]
},
{
name: 'data-00001',
urls: [
'./data1.json',
'./data2.json', etc...
]
},
etc...
];
我最好的尝试,到目前为止是类似于:
self.addEventListener('install', function (event) {
appCaches.forEach(function (appCache) {
event.waitUntil(
caches.open(appCache.name).then(function (cache) {
return cache.addAll(appCache.urls);
}));
});
self.skipWaiting();
});
这种做法似乎工作。不过,我仍然是服务工作者和承诺的新手。有些东西告诉我,这种方法有一个缺陷,即我经验不足以承认。有没有更好的方法来实现这一点?