diff --git a/stats-react/nginx.conf b/stats-react/nginx.conf index 54e9f4a..e58cd49 100644 --- a/stats-react/nginx.conf +++ b/stats-react/nginx.conf @@ -4,8 +4,13 @@ server { root /usr/share/nginx/html; index index.html; - # Статика SPA: всё неизвестное отдаём index.html (клиентский роутинг) + # Статика SPA: всё неизвестное отдаём index.html (клиентский роутинг). + # no-cache на index.html — см. web-react/nginx.conf, тот же приём: без + # него браузер кэширует HTML эвристически и после деплоя показывает + # старую версию до hard refresh. Хэшированные /assets/ ниже кэшируются + # честно на год, инвалидация им не нужна — имя меняется при сборке. location / { + add_header Cache-Control "no-cache"; try_files $uri $uri/ /index.html; } diff --git a/web-react/nginx.conf b/web-react/nginx.conf index b867eed..c26e3d7 100644 --- a/web-react/nginx.conf +++ b/web-react/nginx.conf @@ -4,8 +4,15 @@ server { root /usr/share/nginx/html; index index.html; - # Статика SPA: всё неизвестное отдаём index.html (клиентский роутинг) + # Статика SPA: всё неизвестное отдаём index.html (клиентский роутинг). + # index.html без явного Cache-Control браузер кэширует эвристически (по + # Last-Modified) — после деплоя часть пользователей видит старую версию, + # пока не сделают hard refresh. no-cache вынуждает всегда идти на сервер + # за свежим HTML (быстрый 304 по ETag, если файл не менялся); хэшированные + # /assets/ ниже как кэшировались на год, так и кэшируются — их имя меняется + # при каждой сборке, так что инвалидация не нужна. location / { + add_header Cache-Control "no-cache"; try_files $uri $uri/ /index.html; }