Предварительный кеш рабочего ящика, помещающий элементы в кеш -temp и не использующий его позже

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

Я пытаюсь предварительно кэшировать несколько вызовов API, используя плагин Google Workbox для сервисного работника.

Мой код выглядит так:

workbox.skipWaiting();
workbox.clientsClaim();

const precacheController = new workbox.precaching.PrecacheController();

self.addEventListener("install", event => {
  const assetsLoaded = fetch("http://localhost:8000/pages")
    .then(response => response.json())
    .then(response => {
      let pagesList = response.map(
        page =>
          `http://localhost:8000/pages?slug=${page.slug}`
      );
      pagesList.push("http://localhost:8000/frontpage");
      precacheController.addToCacheList(pagesList);
    })
    .then(() => {
      precacheController.install();
    });
  event.waitUntil(assetsLoaded);
});

self.__precacheManifest = [].concat(self.__precacheManifest || []);
workbox.precaching.suppressWarnings();
workbox.precaching.precacheAndRoute(self.__precacheManifest, {});

Он основан на коде, показанном в этом потоке: Сервисный работник добавляет файлы из Вызов API для предварительного кэширования

В инспекторе я вижу, что эти запросы выполняются и хранятся в workbox-precache-http://localhost:3001/-temp кеше. Но параллельно этому кешу я вижу, что создается workbox-precache-http://localhost:3001/ кеша, который пустой.

Кроме того, в workbox-precache-http://localhost:3001/-temp я вижу, что каждый кешированный ответ имеет Content-Length: 0. Не знаю почему, но это может быть подсказкой. Хотя, когда я смотрю на данный ответ, я вижу его полное содержание в инспекторе...

Когда я пытаюсь сделать какой-либо вызов API, который должен быть предварительно кэширован, он не будет использовать кешированный ответ, а вместо этого сделает новый запрос. В автономном режиме это вызывает ошибку.

Моя цель - сохранить эти запросы в кеше, чтобы пользователь мог просматривать всю страницу в автономном режиме.

Что я делаю не так?


person Piotr Szlagura    schedule 18.01.2019    source источник