Неправильная группа кэша. Все, кроме шрифтов Google, находится в workbox-precache-v2
или app-precache-install-time-v1
кеш-группе, а не в отдельных кеш-группах, таких как css-cache-v1
, js-cache-v1
. Тем не менее, 1 из 20 раз, он показывает правильную группу кеша, и я просто не могу понять, почему.
Это зависит от того, что находится в вашем манифесте предварительного кэша (то есть, что self.__WB_MANIFEST
заменяется во время ваша сборка веб-пакета).
Например, предположим, у вас есть файл, сгенерированный веб-пакетом с именем bundle.js
, и этот файл заканчивается в вашем манифесте с предварительным кэшем. Исходя из кода вашего сервисного работника, этот файл будет помещен в кэш с именем app-precache-install-time-v1
, даже если он также совпадает с вашим маршрутом выполнения с кешем js-cache-v1
.
Причина в том, что ваш прекашированный маршрут зарегистрирован перед тем, как вы запустите маршрут, поэтому ваши логи для предварительного кэширования c будут обрабатывать этот запрос, а не логи для кэширования во время выполнения c.
, показанные шрифтом Google из кэша памяти. Это правильно? Он отлично работает в автономном режиме, но что произойдет, если пользователь закроет браузер / компьютер и вернется в автономном режиме?
Я считаю, что это означает, что запрос не обрабатывается работником службы, но Вы можете проверить журналы рабочих столов в консоли разработчика, чтобы проверить (и посмотрите, почему нет).
В качестве альтернативы, вы можете обновить свой код, чтобы использовать собственный обработчик, который просто регистрирует, работает ли он так:
registerRoute(
/^https:\/\/fonts\.(?:googleapis|gstatic)\.com/,
({request}) => {
// Log to make sure this function is being called...
console.log(request.url);
return fetch(request);
}
);
Правильно ли используется /app-shell.html? Это express бэкэнд-приложение с * в качестве подстановочного знака для всех маршрутов, а React Router управляет маршрутизацией. Функционально работает нормально в автономном режиме. У меня нет app-shell. html page.
Отвечает ли ваш маршрут express файлом с именем app-shell.html
? Если это так, то вы, вероятно, захотите, чтобы ваша версия предварительного кэша составляла sh самого файла (а не revision: 'html-cache-1'
). То, что у вас есть сейчас, должно работать, но есть риск, что вы измените содержимое app-shell.html
, развернете новую версию своего приложения, но ваши пользователи все равно увидят старую версию, потому что вы забыли обновить revision: 'html-cache-1'
. В общем, лучше использовать ревизии, сгенерированные как часть вашего шага сборки.