有許多例子在那裏初始化服務工作者類似於下面的一個緩存:服務工作者與多個緩存
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();
});
這種做法似乎工作。不過,我仍然是服務工作者和承諾的新手。有些東西告訴我,這種方法有一個缺陷,即我經驗不足以承認。有沒有更好的方法來實現這一點?