Service Worker не кэширует файлы при развертывании приложения React

#reactjs #progressive-web-apps #service-worker

#reactjs #progressive-веб-приложения #service-worker

Вопрос:

Я создаю React PWA, который отлично работает на localhost для кэширования всех перечисленных файлов, но когда я развертываю проект на Netlify или любой другой платформе, он не кэширует файлы и не работает в автономном режиме. В хранилище кэша отображается пустой список, который в случае локального хоста показывает все файлы, которые я кэширую. Файл service Worker регистрируется в обоих случаях. Это версия локального хостинга
Это развернутая версия

Ссылка на мой репозиторий github находится здесь: https://github.com/noumanmalik960/quiz-app-pwa

Вот код файла service worker:

 const CACHE_NAME = "cache-v1"
const urlsToCache = [
  '/',
  '/index.html',
  '/static/js/bundle.js',
  '/static/js/0.chunk.js',
  '/static/js/main.chunk.js',
  '/manifest.json',
  '/static/media/bg.759ecf3a.jpg',
  '/images/logo.png'
]


self.addEventListener('install', function (event) {
  // Perform install steps
  event.waitUntil(
    caches.open(CACHE_NAME)
      .then(function (cache) {
        console.log('Opened cache');
        return cache.addAll(urlsToCache);
      })
  );
});

self.addEventListener('fetch', function (event) {
  if (!navigator.onLine) {

    event.respondWith(
      caches.match(event.request)
        .then(function (response) {
          if (response)
            return response;
          return fetch(event.request);
        })
    )
  }


})
  

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

1. Пожалуйста, поделитесь своим URL-адресом развертывания netlify.

2. В вашем filesToCache в service worker вам необходимо добавить URL-адрес развертывания netlify.

3. @VimalPatel Я добавил в список » https://quiz-pwa-knowmi.netlify.app/ «, это моя ссылка на развертывание netlify, но проблема все та же.

Ответ №1:

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

Ошибки

Исправьте вышеупомянутый URL-адрес файлов, и тогда ваш service worker будет работать должным образом.

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

1. Я удалил все файлы из списка кэша, кроме «index.html «но при развертывании он по-прежнему не показывает ничего кэшированного, но в случае локального хостинга он кэширует файлы просто отлично.

2. Я вижу, что Index.html файл в кэшированном списке в разделе «версия-1».

3. Кроме того, пожалуйста, добавьте файлы ниже в свой список кэша, чтобы ваше приложение могло работать в автономном режиме. 2.d7a32088.chunk.js , main.cace1e96.chunk.js , react_devtools_backend.js , inject.js

4. Итак, я кэшировал неправильные файлы, я думаю, кэшировал файлы, которые вы упомянули, и это сработало. Спасибо!