Проблема с кэшем рабочего сервиса React-js - PullRequest
0 голосов
/ 09 февраля 2019

У нас есть автономный плагин, установленный в приложенииactjs, которое использовало сервис-работника для кэширования файлов сборки, которое не проверяло никаких обновлений при новой сборке, и из-за этого теперь пользователь со старой сборкой все еще получает доступ к старому сайту с кэшированными данными вservice-worker. В этих файлах не установлен срок действия, поэтому мне интересно, может ли быть какое-либо решение заставить пользователя обновить страницу или отправить обновление пользователю?

Я обновил новую сборку беззаголовок кэша и автоматическое обновление для автономного плагина, но я все еще не могу найти способ отправить это обновление на старые файлы пользователя

1 Ответ

0 голосов
/ 09 февраля 2019

Я не знаком с offline-plugin, но у меня есть решение.

Браузер выбирает ваш файл ServiceWorker каждый раз, когда загружает ваше приложение.

Если выбранный файл ServiceWorkerотличающийся от того, который был раньше, он в основном заменит старый на новый (но этот процесс немного сложнее и не будет происходить при начальной загрузке нового ServiceWorker [Описание процесса обновленияможно найти здесь] ).

Итак, в основном вы можете изменить файл ServiceWorker и добавить к нему код, который удалит старые кэши при его активации.Например:

self.addEventListener('activate', function(event) {
  event.waitUntil(
    caches.keys().then(function(cacheNames) {
      return Promise.all(
        cacheNames.map(function(cacheName) {
            return caches.delete(cacheName);
        })
      );
    })
  );
});

Более подробную информацию о ServiceWorkers можно найти здесь .

...