Правильный способ обновления одностраничного приложения

У меня есть приложение 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 (или с правильной конфигурацией кэша) позволяет убедиться, что пользователь получает новые версии файлов.

Другие вопросы по тегам