Как настроить сервер для правильного обновления веб-приложения React?
Здравствуйте! Обновляю веб-приложение на React заменой папки build на сервере на новую версию. При этом возникают проблемы, если пользователи на момент обновления уже "были подключены". То есть браузер таких пользователей уже скачал основной main.*.chunk.js и, по мере взаимодействия пользователя, обращается к другим *.chunk.js, которых уже не существует на сервере, т.к. в этом промежутке времени произошло обновление. У пользователя возникают ошибки и помогает обновление страницы по F5. Подскажите, пожалуйста, можно ли настроить nginx таким образом, чтобы только новые пользователи подключались, например, к папке build_new, а уже подключенных до обновления, nginx направлял на build_prev. Или как еще можно организовать обновление без ошибок и без дополнительных действий пользователя (таких как обновление страницы по F5)?
Лучше таки с действиями пользователя: если ему обновить страницу когда он заполнял большую форму - это будет грустно.
Тот же MS просто высвечивают нотификацию "вышла новая версия приложения - обновите страницу".
в nginx можно балансировать 2 фронта upstream , вот тут бородач показывает какие-то нюансы, но в целом суть такая что запущены сервера с фронтом, но по факту раздается только один, можно настроить так что когда ты один из фронтов обновил, всем новым пользователям которые зайдут на сайт - им отдавать обновленный фронт, а старый фронт оставить живым в течении дня, и не след день закрыть, никто же не будет сидеть сутки целые на сайте я думаю без обновления страницы
либо как-то настроить так что, запущен 1 фронт, и когда тебе нужно подкатить обновления, запускаешь 2 фронт ( обновленный уже ) и новых всех юзеров перенаправляешь туда, а старый фронт закрываешь позже - дело в шляпе, я как то хотел этим заняться, да всё руки не доходили, так бы может больше инфы дал,но как я сказал это можно сделать через upstream, там вот бородач минимальную инфу даёт о параметрах weight - это как раз входящие запросы из вне
szQocks, ну собсно это всё равно ничего не гарантирует, всё висит на том, сколько nginx будет хранить записи о старых юзерах. Если кто-то засаспендил комп с открытой страницей твоего сайта и ушёл в отпуск, то когда он вернётся через месяц - он всё равно словит эту ошибку. Так что сообщения надёжнее.:)
anteex, может наверное, чё не может. Просто зачем это ? думаю это не нужно там. Просто для юзеров которые сейчас находятся на сайте - отдаёшься одну версию. А для новых кто только заходит на сайт или зайдёт на сайт - новую. Прочитай про upstream и про параметр weight, и другие параметры, может найдёшь что тебе подходит.