# RÉFLEXION-01 — Stratégie de cache & performance web

**Date** : 2026-06-24
**Contexte mesuré** : Apache `mpm_prefork`+`mod_php`, PHP 8.3 (OPcache 128M), MariaDB 10.11 (tuné, cf OPTIM-01),
WPML (multilingue), thème Divi, ~9.9 Go de médias, 3 vCPU / 3.8 Go RAM, trafic bots élevé.

## État actuel (le problème)
| Couche | État |
|--------|------|
| Cache de page (HTML) | ❌ **Aucun** — chaque visite anonyme re-rend tout le PHP + DB |
| Object cache (Redis) | ⚠️ Redis **installé + actif**, mais **extension PHP `redis` absente** + pas de drop-in → **inutilisé** |
| OPcache (bytecode PHP) | ✅ ON (128M) |
| Static (CSS/JS/img) | ✅ Brotli/Gzip + Expires immutable 1 an (déjà bon) |
| Process model | ⚠️ `mpm_prefork`+`mod_php` (gourmand RAM, concurrence limitée) |

→ **Le plus gros levier = il n'y a aucun cache applicatif.** Tout est calculé à chaque requête.

## Les options (et leur rôle — elles sont COMPLÉMENTAIRES, pas concurrentes)

### 1. Cache de PAGE (full-page) — **ROI #1, visiteurs anonymes**
Sert du HTML pré-généré → bypass total PHP+MariaDB pour les visiteurs non connectés (la majorité + les bots).
Gain TTFB typique : 800ms → 50ms.
- **Contrainte WPML** : le cache doit varier par langue (la plupart des plugins gèrent).
- **Contrainte pages dynamiques** : exclure `/moteursession`, `/moteurartiste` (recherche), panier éventuel, admin.
- Options : WP Super Cache / Cache Enabler (légers, gratuits, WPML-ok), W3 Total Cache (complet, peut piloter Redis aussi), WP Rocket (payant, le plus simple/complet).

### 2. Object cache REDIS — **la question posée ; ROI #2, dynamique + connectés + DB**
Met en cache les résultats de requêtes WP/MariaDB en RAM entre les requêtes.
Aide là où le cache de page n'agit PAS : admin, recherche, AJAX, utilisateurs connectés, et **réduit la charge MariaDB**.
- Redis est **déjà là** → il manque juste : `apt install php-redis`, plugin **Redis Object Cache** (Till Krüss), drop-in `object-cache.php`.
- Effort faible, risque faible (réversible : désactiver le plugin retire le drop-in).

### 3. Alternatives à Redis (pour info)
| Techno | Verdict ici |
|--------|-------------|
| **Memcached** | Équivalent fonctionnel ; Redis déjà installé → pas de raison de switcher |
| **APCu** | Object cache local au process (pas partagé). Simple mais non partagé entre process prefork → moins bon que Redis ici |
| **OPcache** (déjà ON) | Cache le bytecode, PAS les données — complémentaire, ne remplace rien |

### 4. CDN devant (Cloudflare) — **ROI #3, médias + edge + sécurité**
9.9 Go de médias + trafic bots → un CDN offload la bande passante, cache le statique en edge, peut cacher le HTML,
et filtre les bots. Gratuit en tier de base. Synergie forte avec le cache de page.

### 5. Architecture : `mpm_prefork`+`mod_php` → `mpm_event`+PHP-FPM — **chantier plus lourd**
Meilleure concurrence et RAM. Gain réel mais migration plus risquée → à planifier après les caches.

## Recommandation (ordre d'implémentation)
1. **Redis object cache** (réponse directe à ta question) — rapide, Redis déjà prêt, réduit la charge DB tout de suite.
2. **Cache de page** WPML-aware (exclure recherche/admin) — le plus gros gain TTFB pour anonymes/bots.
3. **Cloudflare** devant — médias + edge + filtrage bots.
4. (plus tard) **PHP-FPM + mpm_event**.

> 1 et 2 sont complémentaires et se cumulent. Chaque implémentation suivra le workflow :
> doc dédié + snapshot versionné + apply + vérif + rollback documenté.

## Statut : 📋 RÉFLEXION — en attente d'arbitrage utilisateur sur l'ordre/le périmètre
