Angular2+: как надежно доставить новую версию приложения клиенту минуя кэш браузера?

Здравствуйте. Вопрос по поводу выставления новой версии приложения на сервер. Как уведомить пользователя, чтобы он обновил страничку и при этом приложение подтянулось с сервера, а не из кэша? Angular CLI при сборке дает рандомное имя файлу и вроде как это должно предотвращать кэш. Редко, но случается, что у пользователя осталась старая версия. Я точно не могу сказать перезагрузил он страницу или нет, через десятые руки сложно найти правду. Или если пользователь оставил открытой вкладку, а это время вышла новая версия...
Из того, что видится мне: можно при каждом запросе спрашивать у сервера номер версии, сверять со своей, и, в случае отличия, отменять запрос, выводить пользователю сообщение с кнопкой, которая перезагрузит страницу без кэша, скажем с помощью window.location.reload(true). В этом способе меня смущает момент когда пользователь заполнял большую форму и всё потерял. В принципе обновления выходят в не рабочее время, поэтому количество таких случаев должно быть мало. Можно даже попытаться всё закинуть в кэш и после обновления восстановить модель, если она не сильно изменилась.
Я так понял, что есть вариант использовать service worker, он будет подтягивать новую версию, но вот тут https://angular.io/guide/service-worker-communicat... сказано "Doing this could break lazy-loading into currently running apps, especially if the lazy-loaded chunks use filenames with hashes, which change every version". Вроде бы он при этом делает обновление страницы updates.activateUpdate().then(() => document.location.reload());, поэтому мне эта фраза не понятна... Он там как-то частично загрузился или что? почему всё сломается? ведь после обновления подтянется новый main и все зависимости, и там уже будут известны новые имена... Или эта фраза на случай, когда ты не обновляешь страницу, а пытаешься перезгрузить SPA?

Может у кого-нибудь есть опыт в обновлении и вы видите подводные камни?
  • Вопрос задан
  • 94 просмотра
Пригласить эксперта
Ответы на вопрос 1
search
@search
мама говорит что я особенный
В Google Inbox это реализовано через всплывающую кнопку. Если приложение определило появление новой версии, то показывается ненавязчивое сообщение и кнопка "перезагрузить". Элегантное решение.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы