Используйте сервис-воркер, чтобы он получал последнюю версию, если доступен inte rnet, и использовал последнюю известную версию, если нет Интернета - PullRequest
0 голосов
/ 07 августа 2020

Итак, обычно сервис-воркер работает следующим образом:

  1. Go на веб-сайт
  2. Загрузить последнюю известную версию
  3. Проверять последнюю версию, пока приложение используется
  4. Загрузить новую версию, когда все экземпляры приложения закрыты

Вместо этого я хочу, чтобы оно работало следующим образом:

  1. Когда приложение загружается, проверьте, доступен ли inte rnet.
  2. Если доступен inte rnet, выберите и используйте последнюю версию
  3. Если inte rnet недоступен, используйте версия, которая была кэширована / сохранена.

Может ли кто-нибудь помочь мне с go как это сделать? Спасибо PS: я использую React

1 Ответ

0 голосов
/ 07 августа 2020

Здесь вам понадобится этот обработчик выборки:

self.addEventListener('fetch', function(event) {
  event.respondWith(
    fetch(event.request).catch(function() {
      return caches.match(event.request);
    })
  );
});

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

, я бы предложил использовать устаревшую при повторной проверке

self.addEventListener('fetch', function(event) {
  event.respondWith(
    caches.open('mysite-dynamic').then(function(cache) {
      return cache.match(event.request).then(function(response) {
        var fetchPromise = fetch(event.request).then(function(networkResponse) {
          cache.put(event.request, networkResponse.clone());
          return networkResponse;
        })
        return response || fetchPromise;
      })
    })
  );
});

Если вы сделать запрос на загрузку ответа из кеша. В фоновом режиме вы делаете запрос в сеть и сохраняете этот ответ в кеш. Если вы обновите sh страницу, вы увидите ответ с прошлого раза.

Вот хорошая статья о PWA

https://developers.google.com/web/fundamentals/instant-and-offline/offline-cookbook#stale-while-revalidate

...