Правильный способ обновления одностраничного приложения
У меня есть приложение angular2 Single Page. Я хочу предложить пользователю перезагрузить страницу, когда я выкатил новую версию на рабочий сервер. Я слышал о AppCache. Я слышал о служащих.
Какова принятая практика для этой операции?
Какой процесс вы проходите, чтобы обнаружить изменение и затем принудительно обновить?
В браузере уже есть что-то, что поддерживает это?
Спасибо.
1 ответ
Я не знаю, есть ли стандартная практика, но вот, как я сделал это однажды, успешно:
При развертывании версии 123 я гарантирую, что основной файл index.html содержит следующую строку:
<script>var MYAPP_VERSION=123;</script>
и что сервер отправляет в качестве заголовка всех ответов на запросы AJAX заголовок x-myapp-version=123
,
В приложении (angular1, но вы можете сделать что-то похожее с angular 2), каждый раз, когда я получаю ответ AJAX от бэкэнда, я проверяю, что версия в заголовке идентична версии в MYAPP_VERSION.
Если версии различаются, это означает, что новая версия была развернута, но что пользователь все еще использует старую версию (т.е. не обновил главную страницу). Затем я отображаю предупреждающее сообщение или всплывающее окно (или принудительно обновляю), чтобы убедиться, что страница обновлена. Это в сочетании с версией хэша в файлах и шаблонах JS (или с правильной конфигурацией кэша) позволяет убедиться, что пользователь получает новые версии файлов.