tldr: «Работать в автономном режиме» в Firefox - это не то же самое, что быть в автономном режиме. Не путайте его с автономным режимом Chrome в инструментах разработчика
У меня только что была странная проблема, которая стала еще более странной из-за того, что Firefox и Chrome ведут себя по-разному
- У меня есть 2 работника службы на одном сайте, один из которых находится в папке a, а другой - в папке b.
- У меня есть 2 веб-страницы, веб-страница a и веб-страница b. У каждой веб-страницы есть свой сервисный работник
- Веб-страница a имеет iframe, который будет содержать либо онлайн-страницу, либо автономную веб-страницу b
- Когда вы переходите в автономный режим, веб-страница a показывает веб-страницу b в iframe
У меня была ошибка, из-за которой работник службы b случайно очищал кеш всех работников службы на сайте при активации.
Сайт не работал в Chrome в автономном режиме, он пытался получить файлы в вызове fetch с сервера. Это работало в Firefox
У меня есть код, который показывает содержимое кэша, как показано ниже.
function ShowAllFromCache()
{
console.log("ShowAllFromCache: cache name: " + STARTSW_CACHE)
caches.open(STARTSW_CACHE).then(function (cache)
{
cache.keys().then(function (keys)
{
console.log(keys);
});
});
}
После того, как сервисный работник B активировал и очистил кеш, кеш был пуст, но я вижу в инструментах разработчика, что вызов fetch говорит, что файл не находится в кеше и отправится на сервер. Затем он говорит, что делает xhr вызов нулевой продолжительности, чтобы получить файл и успешно. Он не попадает на сервер
Если я физически отключаю интернет, я получаю сообщение об ошибке:
"Ошибка поврежденного содержимого
На сайте произошла ошибка сетевого протокола, которую невозможно исправить.
Невозможно отобразить страницу, которую вы пытаетесь просмотреть, поскольку обнаружена ошибка в передаче данных. "
Chrome не работает ни в одном из сценариев.