Actualité

Accélérez WordPress avec SQLite Object Cache et APCu

Mai 22, 2025 | Astuces WordPress

Serveur qui tourne avec APCu

Optimiser la vitesse de WordPress passe par l’activation d’un cache objet persistant. Le plugin SQLite Object Cache offre une solution universelle : il fonctionne partout où SQLite3 est disponible, et il exploite automatiquement APCu si l’extension est installée, combinant ainsi la rapidité de la RAM et la persistance du disque. Ce guide vous explique pourquoi et comment mettre en place cette solution hybride, idéale pour la majorité des hébergements.

Pourquoi utiliser SQLite Object Cache (avec ou sans APCu) ?

  • Compatibilité maximale : Fonctionne sur la quasi-totalité des hébergements, même mutualisés.
  • Performance : Utilise SQLite pour la persistance et, si disponible, APCu pour accélérer les accès mémoire.
  • Simplicité : Aucun service externe à installer (contrairement à Redis ou Memcached).
  • Sécurité : Les fichiers de cache sont protégés par défaut grâce à leur nommage et leur emplacement.

Cache objet : rappel et fonctionnement

WordPress utilise un cache objet pour stocker temporairement les résultats de requêtes ou de calculs coûteux. Sans cache persistant, ces données sont perdues à chaque chargement de page, ce qui surcharge la base de données.

  • Avec SQLite Object Cache : Les objets sont stockés dans une base SQLite sur disque.
  • Avec APCu activé : Les objets sont d’abord stockés en RAM (APCu), puis synchronisés sur disque (SQLite), ce qui accélère considérablement les accès et réduit la charge disque.

SQLite Object Cache (APCu) vs Redis : quelle solution choisir ?

CritèreSQLite Object Cache (+APCu)Redis
InstallationTrès simple, extensions PHP SQLite3, APCu + Plugin WordPress,Serveur dédié + plugin Redis
PerformanceTrès rapide (APCu), rapide (SQLite)Très rapide (mémoire réseau)
PersistanceOui (SQLite)Oui (option disque)
Multi-serveurNon (limité à un serveur)Multi-serveur, clustering
Idéal pourMutualisé, VPS, dédié, cloudSites à fort trafic, infrastructures complexes

APCu est donc idéal pour les sites WordPress, tandis que Redis s’adresse aux architectures plus complexes et scalables.
Intéressé pour la mise en place de Redis ? Découvrez mon article sur ce sujet.

Tutoriel : installer et configurer SQLite Object Cache avec APCu

1. Vérifier la compatibilité

  • PHP : APCu fonctionne avec PHP 7.x et 8.x.
  • Hébergement : APCu est compatible avec la plupart des VPS, serveurs dédiés et certains hébergements mutualisés

2. Installer les extensions nécessaires

Sous Ubuntu/Debian  (exemple avec PHP 8.x) :

sudo apt-get update
sudo apt-get install php8.x-sqlite3 
sudo apt-get install php8.x-apcu
sudo systemctl restart php8.x-fpm

Adaptez à votre version (8.1, 8.3, etc.)

3. Vérifier l’installation des extensions

php8.x -m | grep sqlite3

Doit afficher "sqlite3" - Adaptez à votre version (8.1, 8.3, etc.)

php8.x -m | grep apcu

Doit afficher "apcu" - Adaptez à votre version (8.1, 8.3, etc.)

4. Configurer APCu dans le fichier apcu.ini

sudo nano /etc/php/8.x/mods-available/apcu.ini

Adaptez à votre version (8.1, 8.3, etc.)

Exemple de configuration du fichier apcu.ini :

extension=apcu.so
apc.enabled=1
apc.enable_cli=0
apc.shm_size=32M
apc.slam_defense=1
apc.serializer="php"
apc.ttl=43200
apc.gc_ttl=7200
apc.entries_hint=15000
apc.use_request_time=0
apc.coredump_unmap=0
apc.mmap_file_mask=/tmp/apc.8.x.XXXXXX

Explication des paramètres APCu

DirectiveDescription
extension=apcu.soCharge l’extension APCu dans PHP.
apc.enabled=1Active APCu (1 = activé, 0 = désactivé).
apc.enable_cli=0Désactive APCu pour la CLI PHP (utile pour éviter les incohérences lors de l’utilisation de WP-CLI ou des scripts en ligne de commande).
apc.shm_size=32MQuantité de mémoire partagée allouée au cache APCu. À ajuster selon la taille de votre site et la RAM disponible. 32M est un minimum, 64M à 128M sont courants pour des sites dynamiques.
apc.slam_defense=1Active la protection contre le « cache slam », c’est-à-dire la surcharge du cache par des écritures concurrentes sur la même clé. Cela réduit les risques de collisions et de perte de performance.
apc.serializer=“php”Définit le sérialiseur utilisé pour stocker les données. “php” est le choix recommandé et par défaut depuis APCu 5.1.15.
apc.ttl=43200Durée de vie (Time To Live) par défaut des entrées du cache, en secondes (ici 12 heures). Après ce délai, les entrées expirent même si elles sont encore accessibles.
apc.gc_ttl=7200Durée de vie des entrées orphelines avant qu’elles ne soient purgées par le garbage collector (ici 2 heures).
apc.entries_hint=15000Indication du nombre d’entrées attendues dans le cache. Permet à APCu d’optimiser sa gestion interne. Ce n’est qu’un indice, pas une limite stricte
apc.use_request_time=0Si 0, APCu utilise le temps d’accès réel pour l’expiration des entrées (recommandé pour la plupart des usages). Si 1, il utilise le temps de début de requête, ce qui peut causer des expirations imprévues.
apc.coredump_unmap=0Contrôle le dé-mappage de la mémoire partagée lors d’un coredump. Laisser à 0 sauf cas de debug avancé.
apc.mmap_file_mask=/tmp/apc.8.2.XXXXXXOptionnel : définit le masque de fichier utilisé pour la mémoire mappée (MMAP). Permet d’optimiser la gestion mémoire sur certains systèmes, surtout sous Linux. Le chemin doit être accessible en écriture par PHP.

Conseils pratiques

  • apc.shm_size : Adaptez cette valeur à la taille de votre site et à la mémoire disponible. Surveillez la saturation du cache via le script apc.php ou des outils de monitoring.
  • apc.enable_cli : Gardez à 0 pour éviter des incohérences de cache avec WP-CLI ou des scripts cron.
  • apc.ttl et apc.gc_ttl : Ajustez selon la fréquence de mise à jour de vos contenus et la criticité des données en cache.
  • apc.entries_hint : Si votre site manipule beaucoup d’objets en cache, augmentez cette valeur pour de meilleures performances.

Redémarrez PHP après modification :

sudo systemctl restart php8.x-fpm

Adaptez à votre version (8.1, 8.3, etc.)

4. Installer et activer le plugin SQLite Object Cache

Installez puis activez le plugin SQLite Object Cache via l’administration WordPress.

5. Configurer l’utilisation d’APCu et la clé de cache dans wp-config.php

Ajoutez ces lignes avant la ligne /* That's all, stop editing! Happy publishing. */ :

define('WP_SQLITE_OBJECT_CACHE_APCU', true); // Active APCu comme accélérateur mémoire
define('WP_CACHE_KEY_SALT', 'votrenomdomaine_'); // Préfixe unique pour éviter les conflits de cache
  • WP_SQLITE_OBJECT_CACHE_APCU : force l’utilisation d’APCu pour accélérer les accès.
  • WP_CACHE_KEY_SALT : ajoute un préfixe unique aux clés de cache, recommandé si vous hébergez plusieurs sites sur le même serveur.

Conseils et points d’attention

  • WP-CLI : même avec APCu activé, le plugin utilise SQLite pour les commandes WP-CLI, car la RAM n’est pas partagée entre PHP-FPM et CLI.
  • Surveillance : surveillez la mémoire APCu pour éviter la saturation (apc.php ou commandes PHP).
  • Compatibilité : n’utilisez qu’un seul plugin de cache objet à la fois. Vous pouvez cependant installer un plugin de cache de page comme WP Fastest Cache et configurer OPcache côté serveur pour compléter l’optimisation, en plus du cache objet.

Conclusion

Le plugin SQLite Object Cache, combiné à APCu, offre une solution de cache objet rapide, fiable et facile à déployer sur la plupart des hébergements WordPress. Il combine le meilleur des deux mondes : la rapidité de la RAM et la persistance du disque, sans la complexité d’un serveur Redis. Pour la majorité des sites, c’est le choix le plus pragmatique et performant.

Ressources

Xavier Mercier, web designer et graphiste

Contactez-moi maintenant

Augmentons ensemble votre visibilité sur le web.

Share This