API de purge du cache
bext fournit une API de purge de cache compatible avec le module de purge de cache basé sur NJS de nginx. Si vous disposez de scripts ou de hooks de déploiement qui purgent le cache proxy de nginx, ils fonctionnent sans changement avec bext.
Configuration#
L'API de purge du cache s'exécute sur un port distinct (8442 par défaut) :
| Variable d'environnement | Défaut | Description |
|---|---|---|
BEXT_CACHE_PURGE_PORT |
8442 |
Port pour l'API de purge |
BEXT_CACHE_DIR |
/var/cache/nginx/page_cache |
Chemin du répertoire de cache |
L'API respecte la disposition du répertoire levels=1:2 de nginx pour le stockage des clés de cache.
Points de terminaison#
Purger les chemins spécifiques#
POST /nginx-cache/purge
Content-Type: application/json
{
"host": "example.com",
"paths": ["/api/products", "/api/categories"]
}
Supprime les entrées de cache pour les combinaisons hôte + chemin spécifiées.
Purger par modèle#
POST /nginx-cache/purge-pattern
Content-Type: application/json
{
"host": "example.com",
"pattern": "X-Cache-Tag: products"
}
Analyse les entrées du cache et supprime celles correspondant au modèle d'en-tête pour l'hôte donné.
Tout purger#
POST /nginx-cache/purge-all
Efface tout le répertoire de cache.
État du cache#
GET /nginx-cache/status
Renvoie les statistiques du répertoire de cache :
{
"cache_dir": "/var/cache/nginx/page_cache",
"files": 1247,
"directories": 320
}
Hachage des clés de cache#
bext utilise le même hachage de clé basé sur MD5 que nginx :
- La clé de cache (par exemple,
GETexample.com/api/products) est hachée MD5 - Le hachage est mappé sur un chemin de fichier à l'aide de la disposition
levels=1:2:
Hash: d41d8cd98f00b204e9800998ecf8427e
Path: /var/cache/nginx/page_cache/e/27/d41d8cd98f00b204e9800998ecf8427e
^ ^^
| |+-- last 2 hex chars before last 1
| +--- levels=1:2 second level
+------ levels=1:2 first level
Intégration avec les scripts de déploiement#
Si vous disposez de scripts de purge existants qui appellent la purge du cache de nginx :
#!/bin/bash
# deploy.sh — works with both nginx NJS and bext
curl -X POST http://localhost:8442/nginx-cache/purge \
-H "Content-Type: application/json" \
-d '{"host": "example.com", "paths": ["/"]}'
Aucune modification nécessaire : l'API est compatible.
Le port de purge du cache ( 8442 par défaut) est distinct du port HTTP principal et du socket de purge du cache utilisé en interne. Les scripts qui purgent via cette API appellent le cache en mémoire de bext ; ils ne touchent pas au cache FastCGI sur disque. Pour les sites WordPress, le plugin bext-wp appelle automatiquement cette API à chaque modification de contenu — voir Intégration WordPress.
En rapport#
- Aperçu de la compatibilité nginx — comment le cache pleine page de bext s'intègre à la configuration nginx
- Mise en cache — TTL, obsolète pendant la revalidation et invalidation basée sur les balises
- Intégration WordPress — comment
bext-wpappelle cette API après la sauvegarde - Opérations : invalidation et redémarrages — stratégies d'invalidation de cache plus larges