Извините, но я понятия не имею, как воспроизвести это. Я просто пытаюсь понять, что происходит в этот момент.
Я работаю над PWA, для которого определено несколько стратегий маршрутизации. За прошедший день работник службы попал в плохое состояние .... насколько я могу судить, не будучи обновленным.
Показанное поведение зависало при попытке выполнить запросы. Методом проб и ошибок я смог отследить его до моего запасного маршрута - удаление этого маршрута (или обход полностью sw) устранило проблему.
Кроме того, проблема была только в том случае, когда этот маршрут пытался сначала извлечь данные с диска - указав networkfirst или networkonly, эта проблема была решена.
Я попытался очистить кеш, а также указать новый суффикс кеша. Ни один из них не решил проблему. Новые работники сферы обслуживания успешно установили и обслуживали ту же пустую страницу.
В конце концов, перезапуск браузера, похоже, решил проблему. Я не могу ожидать, что конечные пользователи перезапустят свои браузеры, потому что они получают пустую страницу. Мне бы очень хотелось понять, что произошло, чтобы я мог предотвратить это в будущем.
Возможно, это связано с тем, что я нахожусь в процессе создания новой веб-платформы, и вполне вероятно, что рабочая среда получит 40 или 50 раз где-то по пути. Я только «намеренно» кэширую ответы 0 и 200 на проблемном маршруте.
Это маршрут
workbox.routing.registerRoute(
new RegExp(/^(?!.+\/weather?|.+__utm.gif?)/),
workbox.strategies.staleWhileRevalidate({
cacheName: 'resources',
plugins: [
new workbox.expiration.Plugin({
maxEntries: 250,
maxAgeSeconds: 86400 * 30 // 30 days
}),
new workbox.cacheableResponse.Plugin({
statuses: [0, 200]
})
]
})
);
Однако я сократил это до безрезультатного:
workbox.routing.registerRoute(
new RegExp(/^(?!.+\/weather?|.+__utm.gif?)/),
workbox.strategies.staleWhileRevalidate({
cacheName: 'resources',
})
);
Как я уже сказал, это запасной путь. Все, что действительно важно, обрабатывается с помощью предварительной кэширования ... однако этот запасной вариант все еще приводит к зависанию всей страницы.
Попутно я обновился до рабочей версии 3.3.1, но, похоже, к этому моменту ошибка была встроена в мой браузер.
Информация о браузере: 67.0.3396.62 (Developer Build) построена на Debian buster / sid, работает на Debian buster / sid (64-bit)