Snapshot hebdomadaire des refuges maintenu par le conteneur #7

Merged
mat merged 1 commit from snapshot-infra into main 2026-09-22 10:01:40 +00:00
Owner

Contexte

L'API bbox=world&detail=complet de Refuges.info met 15–17 s à répondre (97 % du temps est l'attente du premier octet) : la page reste ~16 s sur « chargement… ».

Ce que fait cette PR

  • au premier démarrage, bloque avant nginx jusqu'à avoir téléchargé, compacté et validé le snapshot mondial (8 641 refuges, ~355 Ko gzip contre 2,96 Mo pour la réponse API) ;
  • ne contient aucun data/refuges.json par défaut dans Git ni dans l'image ;
  • ensuite, ne rafraîchit que si le snapshot dépasse 7 jours (vérification au démarrage puis quotidienne) ;
  • en cas d'échec, conserve l'ancien snapshot s'il existe ; sans snapshot, le conteneur échoue au démarrage ;
  • remplace le fichier atomiquement et le sert via nginx avec gzip, cache 1 h et ETag.

Seule, cette PR est inerte côté navigateur : index.html interroge encore l'API comme aujourd'hui. La bascule côté page (#8) et les tests + CI (#9) font l'objet de PR empilées.

Vérification

Image construite sans snapshot. Premier boot réel : snapshot de 8 641 refuges obtenu avant nginx en 22 s. Source invalide sans snapshot : exit 37 et nginx non démarré. Snapshot existant + source invalide : fallback servi en HTTP 200.

## Contexte L'API `bbox=world&detail=complet` de Refuges.info met 15–17 s à répondre (97 % du temps est l'attente du premier octet) : la page reste ~16 s sur « chargement… ». ## Ce que fait cette PR - au premier démarrage, bloque avant nginx jusqu'à avoir téléchargé, compacté et validé le snapshot mondial (8 641 refuges, ~355 Ko gzip contre 2,96 Mo pour la réponse API) ; - ne contient aucun `data/refuges.json` par défaut dans Git ni dans l'image ; - ensuite, ne rafraîchit que si le snapshot dépasse 7 jours (vérification au démarrage puis quotidienne) ; - en cas d'échec, conserve l'ancien snapshot s'il existe ; sans snapshot, le conteneur échoue au démarrage ; - remplace le fichier atomiquement et le sert via nginx avec gzip, cache 1 h et ETag. Seule, cette PR est inerte côté navigateur : `index.html` interroge encore l'API comme aujourd'hui. La bascule côté page (#8) et les tests + CI (#9) font l'objet de PR empilées. ## Vérification Image construite sans snapshot. Premier boot réel : snapshot de 8 641 refuges obtenu avant nginx en 22 s. Source invalide sans snapshot : exit 37 et nginx non démarré. Snapshot existant + source invalide : fallback servi en HTTP 200.
mat force-pushed snapshot-infra from 75a3d0777e to 63cca1fbaa 2026-09-22 09:35:52 +00:00 Compare
mat force-pushed snapshot-infra from 63cca1fbaa to 89b415ad4c 2026-09-22 09:41:00 +00:00 Compare
mat changed title from WIP: Snapshot hebdomadaire des refuges maintenu par le conteneur to Snapshot hebdomadaire des refuges maintenu par le conteneur 2026-09-22 10:01:37 +00:00
mat merged commit 226a03377c into main 2026-09-22 10:01:40 +00:00
mat deleted branch snapshot-infra 2026-09-22 10:01:40 +00:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
mat/trouve-mon-refuge!7
No description provided.