在Service Worker安装期间初始化2个缓存,只有一个是必需的

时间:2018-09-15 21:30:00

标签: caching promise service-worker offline-caching

我想在Server Worker install事件期间初始化两个缓存,但是只有一个是必需的。

Jake Archibald在他的Offline CookbookOn 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消息。但是会触发activatefetch事件!

我认为我不太擅长使用诺言...

0 个答案:

没有答案