# ADR-001 — wp_option (autoload=false) plutôt que transient pour le cache schema.org
*Date : 2026-05-12 — Session 1*
*Statut : Accepté*

## Contexte
Le module rich-snippets télécharge mensuellement le vocabulaire officiel schema.org (JSON-LD, ~932 types) pour valider les types suggérés par l'IA et ne plus dépendre d'une liste statique embarquée qui devenait vite incomplète. Il faut stocker cette liste entre les exécutions du cron WP.

## Décision
Stocker la liste dans `wp_options` via `update_option('nrs_schema_types_cache', $types, false)` (troisième paramètre `autoload=false` pour ne pas l'injecter dans chaque chargement de page WordPress). La date de dernière sync est stockée dans `nrs_schema_types_cache_date`.

## Alternatives écartées
| Alternative | Raison de l'abandon |
|-------------|---------------------|
| `set_transient` avec TTL 30 jours | Un transient peut être purgé à tout moment par un plugin de cache ou un cron de nettoyage — en cas de purge entre deux exécutions du cron mensuel, on se retrouve avec la liste statique jusqu'au prochain cron (30 jours sans les nouveaux types) |
| Object cache (Redis/Memcached) | Non persistent sur hébergement mutualisé OVH cPanel — la liste serait perdue à chaque redémarrage PHP |
| Fichier JSON versionné dans le plugin | Nécessite un accès FTP/SSH ou un déploiement pour chaque mise à jour schema.org — contraire à l'objectif d'auto-maintenance |

## Conséquences
**Positives :** Résilience au fail réseau — si le fetch mensuel échoue, l'ancienne valeur est conservée (pas de fallback forcé à la liste statique). Pas de surcoût mémoire grâce à `autoload=false`. Pattern standard WordPress.

**Négatives :** Valeur absente au tout premier chargement (avant le premier cron ou le premier clic sur "🔄 Types schema.org") — la liste statique embarquée dans `nrs_valid_schema_types()` sert alors de fallback.

**Irréversibilité :** Faible — migration vers transient ou autre mécanisme ne nécessite que de modifier `nrs_fetch_and_cache_schema_types()` et `nrs_valid_schema_types()`.

## Révision possible
Si WordPress introduit un mécanisme de cache persistant natif garanti, ou si la liste dépasse plusieurs mégaoctets (improbable — schema.org évolue lentement).
