Performance et cache
Pour la pile de cache au niveau du site (Redis, WP Super Cache, cache HTTP, monitoring et sauvegardes), voir Pile de cache.
Cache applicatif (Transients)
Section intitulée « Cache applicatif (Transients) »Le plugin utilise les transients WordPress pour mettre en cache les réponses GeoJSON, évitant ainsi la regénération à chaque requête :
| Motif du transient | TTL | Fonction |
|---|---|---|
irisolaris_plants_geojson_{md5} | 7 jours (complet), 1 jour (filtré) | FeatureCollection GeoJSON mise en cache |
La clé du transient inclut un hash MD5 composé de :
- Les paramètres de filtre (statut, région)
- Le numéro de version du cache (
irisolaris_plants_cache_version)
Invalidation du cache
Section intitulée « Invalidation du cache »Stratégie d’incrémentation de version
Section intitulée « Stratégie d’incrémentation de version »Déclencheur (save/delete plant, changement de terme) └── API::invalidate_plants_cache() └── bump_cache_version() └── irisolaris_plants_cache_version += 1 └── Requête suivante → nouveau MD5 → cache miss → requête fraîche Les anciens transients expirent naturellement (TTL de 7 jours)Déclencheurs :
save_post(toute sauvegarde d’unirisolaris_plant)delete_post(toute suppression d’unirisolaris_plant)set_object_terms(changements de termes de taxonomie)
Comportement :
- Le compteur de version s’incrémente automatiquement
- Les nouvelles requêtes utilisent la nouvelle version dans le hash MD5, provoquant un cache miss
- Les anciens transients ne sont pas activement supprimés — ils expirent naturellement après leur TTL
- Avec le cache objet Redis, les transients sont stockés dans Redis plutôt que dans la base de données
Purge manuelle du cache
Section intitulée « Purge manuelle du cache »Les administrateurs peuvent purger manuellement le cache GeoJSON via :
- Centrales PV → Importer → bouton “Clear cache”
- Cela déclenche le handler AJAX
irisolaris_clear_cache
Optimisations de performance à l’import
Section intitulée « Optimisations de performance à l’import »Les imports en masse de milliers de centrales peuvent être coûteux. Pendant ces opérations, le plugin applique plusieurs optimisations au niveau WordPress pour éviter les timeouts et réduire la charge sur la base de données.
| Optimisation | Fonction |
|---|---|
wp_suspend_cache_invalidation() | Empêche les reconstructions de cache pendant les opérations par lots |
wp_defer_term_counting() | Diffère le comptage des termes de taxonomie jusqu’à la fin du lot |
update_meta_cache() | Pré-charge le cache des métadonnées en masse pour réduire les requêtes individuelles |
update_object_term_cache() | Pré-charge le cache des termes en masse |
| Taille de lot : 200 lignes | Évite les timeouts PHP lors des imports volumineux |
| SQL en masse pour la suppression | Contourne l’API WordPress des posts pour une suppression plus rapide |
Caractéristiques de performance
Section intitulée « Caractéristiques de performance »Les sections ci-dessous résument comment les différentes couches de cache interagissent à l’exécution pour offrir des chargements de page rapides et des interactions cartographiques réactives.
Chargement de la carte
Section intitulée « Chargement de la carte »- Thème cartographique — Mis en cache par le navigateur (cache HTTP, 30 min)
- GeoJSON — Mis en cache via transient (7 jours), cache HTTP (30 min)
- Tuiles cartographiques — Mises en cache par le navigateur depuis le CDN OpenFreeMap
- Clustering — Côté client (MapLibre), réduit les éléments DOM pour plus de 2 000 centrales
Base de données
Section intitulée « Base de données »- Cache objet Redis — Réduit les requêtes en base de données pour les opérations WordPress répétées
- Colonne
dens7indexée — Recherches de densité rapides lors des vérifications d’éligibilité - Requêtes meta
work_id— Utilisées pour la logique d’upsert lors des imports