# 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).
