Idon't знать, есть ли стандартная практика, но вот как я сделал это один раз, успешно:
Когда я раскрываю версии 123, я могу гарантировать, что основной index.html файл содержит следующую строку:
<script>var MYAPP_VERSION=123;</script>
и что бэкэнд отправляет в качестве заголовка всех ответов на запросы AJAX заголовок x-myapp-version=123
.
В приложении (угловой 1, но вы можете что-то подобное с угловым 2), каждый раз, когда я получаю ответ AJAX от бэкэнд, я проверяю, что версия в заголовке идентична версии в MYAPP_VERSION.
Если версии отличаются друг от друга, это означает, что новая версия была развернута, но пользователь по-прежнему использует старую версию (то есть не обновил основную страницу). Затем я показываю сообщение предупреждения или всплывающее окно (или принудительно обновляю), чтобы убедиться, что страница обновлена. Это, в сочетании с версией хэша в файлах и шаблонах JS (или правильной конфигурации кеша, позволяет убедиться, что пользователь получает новые версии файлов.
Вы хотите динамически проверять наличие новой версии или просто обеспечить что он загружается при загрузке страницы? Что бы вы ни делали, он должен быть прозрачным для пользователя. Мы используем Grunt Cache-bust для добавления случайных строк к именам JS. – isherwood
@isherwood Я не знаю, действительно ли это решение имеет наибольший смысл. В основном, я хочу обнаружить, что приложение JS изменилось, а затем предложило пользователю что-то изменилось и предложило им обновить. Grunt Cache-bust не помог бы с этим. –
Ну, вам придется иметь какой-то механизм для указания обновленных файлов, поэтому кэширование, вероятно, по-прежнему является хорошей идеей (и гарантировало бы текущую версию при загрузке страницы). Затем вам нужно было опросить подачу r периодически проверять версии. Если у вас нет приложения, которое пользователи, как правило, остаются открытыми в течение нескольких дней подряд, это кажется чрезмерным. – isherwood