Ответ 1
Я держу свои старые блоки на месте в течение нескольких дней после обновления только для этой цели. Мое приложение также состоит из мини-SPA, поэтому, когда они перемещаются, они могут поднять новую версию во время загрузки страницы.
Если я вношу изменения в мое приложение angular, имена блоков будут изменены при сборке, а старая версия будет удалена из папки dist. После развертывания, если пользователь в данный момент находится на сайте, а затем перешел на другую часть сайта, я получаю ошибку с ошибкой загрузки, поскольку старый файл больше не существует.
Мое приложение построено с использованием angular cli, поэтому оно упаковано с помощью webpack.
В любом случае это можно преодолеть.
Я держу свои старые блоки на месте в течение нескольких дней после обновления только для этой цели. Мое приложение также состоит из мини-SPA, поэтому, когда они перемещаются, они могут поднять новую версию во время загрузки страницы.
Я знаю, что немного опоздал к игре по этим вопросам, но я бы рекомендовал изменить подход к развертыванию.
Проверьте https://immutablewebapps.org/. Основная философия заключается в том, чтобы изолировать ваши временные ресурсы от переменных времени выполнения. Это дает массу преимуществ, но самые большие из них:
Это также не должно мешать предложению ** PreloadAllModules **, предложенному @dottodot ниже.
Отключить хэширование кусков
ng build --output-hashing none
Для получения дополнительной информации см. официальную сборку документация
Вы можете отправить какое-либо событие со стороны сервера, чтобы перезагрузить приложение. Кроме того, есть возможность предварительно выбрать ленивые модули в фоновом режиме, чтобы предварительно собрать их как можно скорее, а не ждать запроса этих модулей.
попробуйте это ng build --output-hashing none
Используйте предварительную загрузку. Вы получаете выгоду от ленивой загрузки, без хлопот, которые она вызывает в таких ситуациях. Все порции будут переданы пользователю как можно быстрее без замедления начального времени загрузки. Ниже приведен отрывок из https://vsavkin.com/angular-router-preloading-modules-ba3c75e424cb, объясняющий, как это работает (диаграммы см. в статье):
Сначала мы загружаем исходный пакет, который содержит только компоненты мы должны загрузить наше приложение. Так быстро может быть.
Затем мы загружаем приложение с помощью этого небольшого пакета.
На данный момент приложение работает, поэтому пользователь может запустить взаимодействуя с ним. Пока она это делает, мы, на заднем плане, предварительно загрузить другие модули.
Наконец, когда она нажимает на ссылку, ведущую на лениво загружаемый модуль, навигация мгновенная.
Мы получили лучшее из обоих миров: начальное время загрузки не превышает это может быть, и последующие навигации происходят мгновенно.
Очистить кеш браузера. Работал для меня