Build & Deploy / build (push) Successful in 23s
nginx ne posait aucun Cache-Control sur index.html. Le navigateur appliquait son cache heuristique et gardait l'ancien index.html, qui référence les anciens assets fingerprintés — eux marqués immutable un an. Conséquence : un déploiement pouvait rester invisible pendant une durée indéterminée, sans Ctrl+Shift+R. no-cache ne désactive pas le cache, il impose une revalidation : 304 tant que rien ne change, nouveau build dès qu'il change. Côté page admin, un 401 (jeton absent ou expiré au bout de 30 min) produisait « Impossible de charger les utilisateurs » — un message qui accuse le serveur alors que la session est simplement morte, l'interface continuant de croire l'utilisateur connecté. Les 401 et 403 sont désormais distingués et nommés. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
26 lines
825 B
Nginx Configuration File
26 lines
825 B
Nginx Configuration File
server {
|
|
listen 80;
|
|
server_name _;
|
|
root /usr/share/nginx/html;
|
|
index index.html;
|
|
|
|
# SPA : toute route inconnue retombe sur index.html (react-router).
|
|
location / {
|
|
try_files $uri $uri/ /index.html;
|
|
}
|
|
|
|
# index.html référence les assets fingerprintés : s'il est mis en cache, le
|
|
# navigateur continue de charger l'ancien build (assets marqués immutable)
|
|
# pendant une durée indéterminée. no-cache = il le garde mais revalide, donc
|
|
# un 304 tant que rien ne change, et le nouveau build dès le déploiement.
|
|
location = /index.html {
|
|
add_header Cache-Control "no-cache, must-revalidate";
|
|
}
|
|
|
|
# Cache long pour les assets fingerprintés par Vite.
|
|
location /assets/ {
|
|
expires 1y;
|
|
add_header Cache-Control "public, immutable";
|
|
}
|
|
}
|