Как исправить событие выборки у сервисного работника с помощью workbox.streams - PullRequest
0 голосов
/ 18 января 2019

Я использую workbox.streams, чтобы попытаться объединить данные для создания ответа. Событие выборки не запускается.

Я работаю над пониманием того, как workbox.streams работает.

Код ниже является третьей итерацией. Я подумал, что это было проблемой с регулярным выражением, поэтому я изменил это на то, что в коде ниже.

Я убедился, что работаю с последней версией Workbox, чтобы убедиться, что это не проблема с версией, которую я использовал.

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

importScripts('https://storage.googleapis.com/workbox-cdn/releases/4.0.0-beta.0/workbox-sw.js');

// Make this a debug build
workbox.setConfig({
  debug: true,
});

const HEAD = '/page-top.html';
const FOOT = '/page-bottom.html';
// const ERROR = '/page-error.html';

const cacheStrategy = workbox.strategies.cacheFirst({
  cacheName: workbox.core.cacheNames.precache,
});

const networkStrategy = workbox.strategies.staleWhileRevalidate({
  cacheName: 'content',
  plugins: [
    new workbox.expiration.Plugin({
      maxEntries: 50,
    }),
  ],
});

workbox.precaching.precacheAndRoute([]);

workbox.routing.registerRoute(
  new RegExp('\.*\.html'),
  workbox.streams.strategy([
    () => cacheStrategy.makeRequest({request: HEAD}),
    async ({event}) => {
      try {
        const contentResponse = networkStrategy.makeRequest({
          request: event.request.url,
        });
        const contentData = await contentResponse.text();
        return contentData;
      } catch (error) {
        return cacheStrategy.makeRequest({request: ERROR});
      }
    },
    () => cacheStrategy.makeRequest({request: FOOT}),
  ])
);

Я ожидаю, что браузер отобразит страницу, созданную из всех компонентов, кэшированных с помощью workbox.streams.strategy. Вместо этого я получаю только тело страницы; похоже, что весь маршрут игнорируется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...