2016-10-05 3 views
1

У меня есть приложение с угловыми одиночными страницами. Я хочу попросить пользователя перезагрузить страницу, когда я вернул новую версию на рабочий сервер. Я слышал об AppCache. Я слышал о Служащих.Правильный способ обновления Single Page Application

Какова принятая практика для этой операции?

Какой процесс вы пытаетесь обнаружить, а затем принудительно обновить?

Есть что-то уже в браузере, который поддерживает это?

спасибо.

+0

Вы хотите динамически проверять наличие новой версии или просто обеспечить что он загружается при загрузке страницы? Что бы вы ни делали, он должен быть прозрачным для пользователя. Мы используем Grunt Cache-bust для добавления случайных строк к именам JS. – isherwood

+0

@isherwood Я не знаю, действительно ли это решение имеет наибольший смысл. В основном, я хочу обнаружить, что приложение JS изменилось, а затем предложило пользователю что-то изменилось и предложило им обновить. Grunt Cache-bust не помог бы с этим. –

+0

Ну, вам придется иметь какой-то механизм для указания обновленных файлов, поэтому кэширование, вероятно, по-прежнему является хорошей идеей (и гарантировало бы текущую версию при загрузке страницы). Затем вам нужно было опросить подачу r периодически проверять версии. Если у вас нет приложения, которое пользователи, как правило, остаются открытыми в течение нескольких дней подряд, это кажется чрезмерным. – isherwood

ответ

0

Idon't знать, есть ли стандартная практика, но вот как я сделал это один раз, успешно:

Когда я раскрываю версии 123, я могу гарантировать, что основной index.html файл содержит следующую строку:

<script>var MYAPP_VERSION=123;</script> 

и что бэкэнд отправляет в качестве заголовка всех ответов на запросы AJAX заголовок x-myapp-version=123.

В приложении (угловой 1, но вы можете что-то подобное с угловым 2), каждый раз, когда я получаю ответ AJAX от бэкэнд, я проверяю, что версия в заголовке идентична версии в MYAPP_VERSION.

Если версии отличаются друг от друга, это означает, что новая версия была развернута, но пользователь по-прежнему использует старую версию (то есть не обновил основную страницу). Затем я показываю сообщение предупреждения или всплывающее окно (или принудительно обновляю), чтобы убедиться, что страница обновлена. Это, в сочетании с версией хэша в файлах и шаблонах JS (или правильной конфигурации кеша, позволяет убедиться, что пользователь получает новые версии файлов.

+0

Благодарим вас за предложение. Я подумал об этом, но мне кажется, что это тяжелая рука, и мне было интересно, есть ли стандарт дезактома, чтобы сделать это в Javascript. –