Почему Workbox не использует кеш для автономного использования? - PullRequest
2 голосов
/ 15 апреля 2020

Я использую Workbox .

Я хочу кешировать файлы из https://cdn.jsdelivr.net, поэтому я добавляю это в service-worker.js:

workbox.routing.registerRoute(new RegExp('https://cdn.jsdelivr.net/.*'), new workbox.strategies.CacheFirst({}), 'GET');

В первый раз я открываю приложение и вижу, что мое приложение отправляется запрос на https://cdn.jsdelivr.net/npm/@mdi/font@4.x/fonts/materialdesignicons-webfont.woff2?v=4.9.95.

Во второй раз, когда я нажимаю refre sh, я вижу, как он извлекается из сервисного работника в сети.

Но когда я делаю автономный режим и нажимаю refre sh У меня 404.

Почему? Что я могу сделать, чтобы добавить в кэш правильным способом?

Я делаю точно так же, как сказать в документах и в GitHub выпуск , но не работает эфир.

Мой полный код:

console.log('in pwa');

workbox.setConfig({
  debug: true,
});

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 || []);

console.log({ __precacheManifest: self.__precacheManifest });
// workbox.precaching.suppressWarnings()
workbox.precaching.precacheAndRoute(self.__precacheManifest, {});


workbox.routing.registerRoute(
  new RegExp('https://fonts.(?:googleapis|gstatic).com/(.*)'),
  new workbox.strategies.CacheFirst({
    cacheName: 'google-fonts',
    plugins: [
      new workbox.expiration.Plugin({
        maxEntries: 30,
      }),
      new workbox.cacheableResponse.Plugin({
        statuses: [0, 200]
      }),
    ],
  }),
);


workbox.routing.registerRoute(
  new RegExp('https://cdn.jsdelivr.net/(.*)'),
  new workbox.strategies.CacheFirst({
    cacheName: 'jsdelivr-fonts',
    plugins: [
      new workbox.expiration.Plugin({
        maxEntries: 30,
      }),
      new workbox.cacheableResponse.Plugin({
        statuses: [0, 200]
      }),
    ],
  }),
);
// https://cdn.jsdelivr.net
workbox.routing.registerNavigationRoute(workbox.precaching.getCacheKeyForURL('/index.html'));

НЕТ разделов кэша (для google-шрифтов и jsdelivr-шрифтов) создать:

enter image description here

ОБНОВЛЕНИЕ

Когда я полностью удаляю сервисного работника и открываю приложение, все равно у меня нет раздела кеша. после того, как я нажал refre sh - У меня есть!

Как это сделать при установке сервисного работника? а не активировать?

...