Какую проблему может вызвать принудительная активация обновления, связанная с отложенной загрузкой в ​​приложении Angular PWA? - PullRequest
0 голосов
/ 14 июня 2019

Я хочу принудительно активировать обновление в приложении Angular PWA.Документ (https://angular.io/guide/service-worker-communications) содержит следующее примечание:

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

Что означает эта заметка? Не могли бы вы объяснить, как и в чем проблема с отложенной загрузкой из-за принудительной активации обновления?

Спасибо!

David

1 Ответ

1 голос
/ 14 июня 2019

Я не разбираюсь во внутренних принципах работы Angular SW, но это общая проблема принудительного обновления приложений, использующих Service Worker:

  1. Пользователь открывает страницу на вкладке 1-> SW устанавливает и предварительно кэширует компоненты (чанки), НО приложение не загружает все компоненты, вместо этого ожидает взаимодействия пользователя для загрузки компонентов (чанков)
  2. Пользователь открывает страницу наtab 2 -> загружается мгновенно, так как SW был установлен и предварительно кэшированные файлы были, ну, в общем, в кеше
  3. Разработчик обновляет приложение каким-то образом -> некоторые чанки переименовываются
  4. Разработчик развертывает приложение на сервере И удаляет старые версии файлов -> на сервере теперь есть только новые версии файлов с разными именами чанков
  5. Пользователь использует приложение на вкладке 2 -> происходит принудительное обновление, и когда это происходит, новое ПО удаляет старые компоненты (куски) из кэша и предварительно кэширует новые версии компоновки.nts
  6. Пользователь возвращается на вкладку 1, и приложение пытается лениво загрузить СТАРУЮ версию некоторого чанка ->, так как # 5 УДАЛЕН кэш с SW, и файлы НЕ существуютна сервере больше не выполняется отложенная загрузка фрагмента

Проще говоря: если вы не обновляете принудительно ВСЕ ВЕРСИИ ВЕРСИИ приложения на всех возможных вкладкахв том же браузере может возникнуть проблема, когда работающий код JavaScript пытается лениво загрузить чанк, который не существует ни в кэше браузера, ни на сервере.

...