我想在Server Worker install
事件期间初始化两个缓存,但是只有一个是必需的。
Jake Archibald在他的Offline Cookbook的On install - not as a dependency部分中,展示了如何缓存两组文件,只有一组是必需的。但这是相同的缓存,我想要两个缓存。
This question on Stack Overflow显示了如何初始化多个缓存,但是被接受的答案使所有文件集都是强制性的(我认为)。
我正在寻找以下两种选择的组合: -两个缓存 -两组文件,每个缓存一组 -只有一组强制性文件才能使安装有效
我已经尝试过自己,并编写了以下代码:
const version = 'ex13'
const offlineFallback = 'offline-fallback.html'
const shellCacheName = 'shellCache' + version
const shellCacheFiles = [offlineFallback, 'styles.css']
const contentCacheName = 'contentCache' + version
const contentCacheFiles = ['horse.png', '/', 'index.html']
// https://mdn.io/serviceworker+oninstall
self.addEventListener('install', event => {
caches.open(contentCacheName).then(contentCache => {
// These items won't block the installation
// https://mdn.io/cache+addall
contentCache
.addAll(contentCacheFiles)
.then(() => {
console.info(`[SW] content files added to ${contentCacheName}`)
})
.catch(error => {
console.error(
`[SW] Couldn't add content files to ${contentCacheName}: ${error}`,
)
})
})
event.waitUntil(
caches.open(shellCacheName).then(shellCache => {
// These items must be cached for the Service Worker to complete installation
return shellCache
.addAll(shellCacheFiles)
.then(() => {
console.info(`[SW] Shell files added to ${shellCacheName}`)
console.info(`[SW] Service Worker ${version} installation done`)
})
.catch(error => {
console.error(
`[SW] Couldn't add shell files to ${shellCacheName}: ${error}`,
)
})
}),
)
})
例如,如果缺少styles.css
,则shellCache
的初始化会出错,因此我不会收到Service Worker ex13 installation done
消息。但是会触发activate
和fetch
事件!
我认为我不太擅长使用诺言...