maximumFileSizeToCacheInBytes делает SW избыточным

#workbox

#workbox

Вопрос:

Я использую workbox-webpack-plugin (5.1.4) для создания сервисного работника.

В wepback я добавил GenerateSW в плагины со следующей конфигурацией

 {
  swDest: 'serviceWorker.js',
  clientsClaim: true,
  skipWaiting: true,
  mode: process.env.NODE_ENV,
  sourcemap: false,
  cleanupOutdatedCaches: true,
  runtimeCaching: [{
    urlPattern: ///,
    handler: 'NetworkFirst',
  }, {
    urlPattern: /.(?:js|css|html|map)$/,
    handler: 'StaleWhileRevalidate',
  }, {
    urlPattern: /.(?:png|jpg|jpeg|mp4|svg|ico)$/,
    handler: 'CacheOnly',
  }, {
    urlPattern: /^https://xx(?:-dev|).xx.xx/media-service/(?:page1|page2|page3)(.*)/,
    handler: 'NetworkFirst',
  }],
}
  

Это работает хорошо.

Но когда я добавил maximumFileSizeToCacheInBytes: 20 * 1024 * 1024 для настройки была выдана следующая ошибка:

статус избыточен

Чего мне не хватает?

Комментарии:

1. Какое сообщение об ошибке регистрируется в консоли браузера, когда это происходит?

2. Только одна ошибка из SW.js : «Не пойманный (в обещании) Ошибка типа: не удалось выполнить выборку»

Ответ №1:

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

Если не удается загрузить что-либо, указанное в вашем манифесте предварительного кэширования, установка service worker завершится неудачно, и при следующей регистрации service worker будет предпринята повторная попытка.

Вы можете увидеть запись на сетевой панели в DevTools Chrome, соответствующую неудачной загрузке, если вам нужно отладить, какой URL-адрес не работает. Но, исходя из того, что вы описываете, скорее всего, это будет URL-адрес любого большого файла, разрешенного через maximumFileSizeToCacheInBytes .

Основная причина неудачной загрузки, вероятно, не связана с Workbox и связана с проблемой обработки вашим веб-сервером запроса на этот URL.