Инициализация 2 кешей во время установки Service Worker, только один является обязательным - PullRequest
0 голосов
/ 16 сентября 2018

Я хотел бы инициализировать два кэша во время моего события Server Worker install, но только один является обязательным.

В своей автономной кулинарной книге При установке - не в качестве зависимости , Джейк Арчибальд показывает, как кэшировать два набора файлов, только один из которых является обязательным. Но это тот же кеш, я хочу два кеша.

Этот вопрос о переполнении стека показывает, как инициализировать несколько кэшей, но принятый ответ делает все наборы файлов обязательными (я думаю).

Я ищу сочетание этих двух вариантов: - два тайника - два набора файлов, по одному на каждый кеш - только один набор файлов обязателен для установки, чтобы быть действительным

Я попробовал себя и написал этот код:

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 запускаются!

Я думаю, что я не очень хорош в использовании обещаний ...

...