Décisions

ADR 002 : Stratégie de rendu et de cache

Statut

Proposé

Contexte

Lucarne doit être hautement disponible, extrêmement performant et résilient aux pannes de l'API amont (CRISalid), tout en affichant des données relativement peu volatiles à l'échelle de la seconde.

Décision

  • Utilisation de Next.js App Router (Server Components par défaut) avec un rendu hybride.
  • SSG (Static Site Generation) ou rendu serveur avec long TTL pour les pages d'accueil et éditoriales.
  • ISR (Incremental Static Regeneration) / SWR (Stale-While-Revalidate) pour les entités de l'annuaire (laboratoires, chercheurs, etc.).
  • Utilisation d'un CDN frontal avec gestion des cache tags par entité.
  • Un webhook de révalidation permettra de vider sélectivement le cache lors d'une mise à jour dans le système source.
  • Mode dégradé : en cas d'indisponibilité de la source amont, le cache CDN et le cache Next.js continueront à servir les pages déjà générées.

Conséquences

  • D'excellentes performances SEO et Web Vitals.
  • Une résilience élevée.
  • Complexité accrue pour gérer les invalidations partielles de cache (ex: répercuter le changement de nom d'un laboratoire sur la page des chercheurs affiliés).