next-pwa runtimecaching не создает стратегии

Я начал использовать next-pwa, и базовая настройка сработала отлично. Теперь он хочет поиграть с опцией кэширования во время выполнения, которая у меня не работает:

Мой next.config.js включает в себя стандартные записи кеша плюс пользовательский, который должен использовать стратегию StaleWhileRevalidate для каждого запроса, идущего в / api / todoitem:

      const withPWA = require("next-pwa");
const defaultRuntimeCaching = require("next-pwa/cache");

module.exports = withPWA({
  reactStrictMode: true,
  pwa: {
    dest: "public",
    disable: false, // disable PWA
    register: true,
    skipWaiting: true,
    runtimeCaching: [
      {
        urlPattern: /\/api\/todoitem/,
        method: "GET",
        handler: "StaleWhileRevalidate",
        options: {
          cacheName: "todoApp-api",
          expiration: {
            maxEntries: 64,
            maxAgeSeconds: 24 * 60 * 60, // 24 hours
          },
        },
      },
      ...defaultRuntimeCaching,
    ],
  },
});

Перезапустите npm run dev, запустите браузер -> fetchGET / api / todoitem -> и console.log сообщает мне

      workbox Network request for '/api/todoitem' returned a response with status '200'.
workbox Using NetworkOnly to respond to '/api/todoitem'

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

Мы будем очень благодарны за любые подсказки по поводу работы настраиваемых правил runtimeCache.

next.js 12.0.7

next-pwa 5.4.4

node.js v14.18.2

1 ответ

После некоторых исследований я обнаружил:

В режиме разработки next-pwa создает сервис-воркер, который отключает кэширование. Мне даже в консоли так говорят ;-):

      [PWA] Build in development mode, cache and precache
are mostly disabled. This means offline support is
disabled, but you can continue developing other
functions in service worker.

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

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

Другие вопросы по тегам