Как обслуживать в автономном режиме. html, когда нет соединения inte rnet? - PullRequest
1 голос
/ 15 апреля 2020

Я использую рабочий ящик и vuejs, и я хочу обслуживать страницу public/offline.html, когда у меня нет соединения inte rnet.

Я редактирую раздел pwa на vue.config.js для дескриптора service-worker себя:

  pwa: {
    name: 'myapp',
    workboxPluginMode: 'InjectManifest',
    workboxOptions: {
      swSrc: path.resolve(__dirname, 'src/pwa/service-worker.js')
    }
  },

Я добавляю этот код для поддержки автономной страницы в service-worker.js:

console.log('in pwa');

self.addEventListener('message', (event) => {
  if (event.data && event.data.type === 'SKIP_WAITING') {
    self.skipWaiting();
  }
});

// The precaching code provided by Workbox. You don't need to change this part.
self.__precacheManifest = [].concat(self.__precacheManifest || []);
// workbox.precaching.suppressWarnings()
workbox.precaching.precacheAndRoute(self.__precacheManifest, {});

self.addEventListener("fetch", function(event) {
  event.respondWith(
      fetch(event.request).catch(function() {
          return caches.match(event.request).then(function(response) {
              if (response) {
                  return response;
              } else if (event.request.headers.get("accept").includes("text/html")) {
                  return caches.match(workbox.precaching.getCacheKeyForURL('/offline.html'));
              }
          });
      })
  );
});

Поэтому, когда я получаю доступ к www.myapp.com/en или www.myapp.com/en/about, я получаю офлайн стр.

Но проблема в том, что я получаю доступ к www.myapp.com - рабочая область обслуживает файл индекса. html из кэша.

Я могу удалить индекс. html из кеш, но когда я в сети, я ХОЧУ обслуживать индекс из кеша.

Итак, я нахожусь здесь в дилемме, как это сделать?

...