Как правильно обращаться с PWA - Сервисный работник End-Of-Life - PullRequest
0 голосов
/ 03 октября 2019

например, у нас есть приложение PWA, работающее в течение года на сервере, и теперь мы планируем остановить службу (выключить сервер и удалить записи DNS)

Но когда мы просто выключаем сервер,клиентские браузеры по-прежнему будут кэшировать PWA, и пользователи будут видеть сообщения об ошибках, которые не могут быть достигнуты сервером, всякий раз, когда они выполняют действие.

Как мы можем изящно справиться с этой ситуацией?

подробнее:

  • , когда новые пользователи посещают страницу (после остановки сервера), все в порядке: они видят This site can’t be reached
  • пользователей, которые ужеПосетив страницу ранее, вы увидите устаревший PWA, который, кажется, не работает, поскольку сервер не может получить доступ
    • , даже когда пользователи обновляют страницу браузера, они видят устаревший PWA
  • мы думали о том, чтобы сохранить домен на некоторое время и перенаправить его на другую страницу, но это также не помогло бы (и, кроме того, мы использовали https и HSTS - так что перенаправлениеcting не вариант)
  • ServiceWorker LifeCycle не упоминает об окончании срока службы

1 Ответ

2 голосов
/ 03 октября 2019

Можете ли вы выпустить новую версию веб-сайта перед выключением сервера?
Там вы можете не только удалить ПО, но и отменить его кеш:

// Unregister the SW
navigator.serviceWorker.getRegistration()
   .then(function(registration) {
       if(registration){
          registration.unregister()
          .then(
               function(success) {
                 // if success = true, unregister was successful
                });
          }
    });


 // Delete SW Cache
if ('caches' in window) {
    caches.keys()
      .then(function(keyList) {
          return Promise.all(keyList.map(function(key) {
              return caches.delete(key);
          }));
      })
}

Я написал статью о Сервисные работники и стратегии кэширования , если вы хотите посмотреть его.

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


ОБНОВЛЕНИЕ

Я дополнительно проверил некоторыедокументации, но я не смог найти ничего о времени жизни (даже на MDN документах ). Поэтому представляется невозможным определить ограничение времени изнутри ПО.

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

...