Получение net :: ERR_CONNECTION_RESET 200 (ОК) для файлов js / css, обслуживаемых служащим - PullRequest
0 голосов
/ 22 января 2019

UPD 22.02.2019 https://bugs.chromium.org/p/chromium/issues/detail?id=934386

Я активно тестирую своего работника службы кэширования и иногда получаю ошибку net::ERR_CONNECTION_RESET 200 (OK) для файлов js / css, которые обслуживаются службойworker.
Я использую workbox 3.6.3

Шаги для воспроизведения:

  • остановка сервисного работника
  • удаление всех кэшей
  • перезагрузка первой страницы - моя веб-страница загружена и сервисный работник установлен
  • перезагрузка второй страницы - иногда я получаю ошибку , которая выглядит следующим образом GET https://dev-host.com/client/build/_/12.js net::ERR_CONNECTION_RESET 200 (OK)

Что происходит в браузере:

  • мой скрипт загружается через тег script, который создается и вставляется в тег head веб-страницы.Все это выполняется функцией requireEnsure из скрипта manifest.js, сгенерированного веб-пакетом - https://gist.github.com/chestozo/acd651382f9590988d4679f8dbb21d19.
  • , поскольку я вижу, что запрос скрипта перехватывается рабочим, который выполняет выборку скрипта и сохраняет его в кеше
  • тогда я вижу, что первоначальный запрос занимает некоторое время, а затем происходит сбой

Network panel

  • первый запрос, инициированный script тег вставляется во второй запрос head
  • - выполняется сервисным работником;это успешно

Здесь вы можете видеть, что запрос файла перехватывается рабочей коробкой:

File request goes via service worker

И, наконец, этот первоначальный запростерпит неудачу: Request failure

Вот как выглядит мой скрипт работника службы sw.js:

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

workbox.routing.registerRoute(
    new RegExp(reRuntimeStatic),
    workbox.strategies.cacheFirst({
        cacheName: CACHE_NAMES.STATIC,
        plugins: [
            new workbox.cacheableResponse.Plugin({
                statuses: [ 200 ]
            }),
            new workbox.expiration.Plugin({
                maxAgeSeconds: 5 * 60 * 60 * 24,
                maxEntries: 100
            })
        ]
    }),
    'GET'
);

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

Есть идеи, что здесь происходит?

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