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ère | SQLite Object Cache (+APCu) | Redis |
|---|---|---|
| Installation | Très simple, extensions PHP SQLite3, APCu + Plugin WordPress, | Serveur dédié + plugin Redis |
| Performance | Très rapide (APCu), rapide (SQLite) | Très rapide (mémoire réseau) |
| Persistance | Oui (SQLite) | Oui (option disque) |
| Multi-serveur | Non (limité à un serveur) | Multi-serveur, clustering |
| Idéal pour | Mutualisé, VPS, dédié, cloud | Sites à 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-fpmAdaptez à votre version (8.1, 8.3, etc.)
3. Vérifier l’installation des extensions
php8.x -m | grep sqlite3Doit afficher "sqlite3" - Adaptez à votre version (8.1, 8.3, etc.)
php8.x -m | grep apcuDoit 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.iniAdaptez à 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.XXXXXXExplication des paramètres APCu
| Directive | Description |
|---|---|
| extension=apcu.so | Charge l’extension APCu dans PHP. |
| apc.enabled=1 | Active APCu (1 = activé, 0 = désactivé). |
| apc.enable_cli=0 | Dé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=32M | Quantité 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=1 | Active 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=43200 | Duré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=7200 | Durée de vie des entrées orphelines avant qu’elles ne soient purgées par le garbage collector (ici 2 heures). |
| apc.entries_hint=15000 | Indication 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=0 | Si 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=0 | Contrô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.XXXXXX | Optionnel : 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.phpou 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-fpmAdaptez à 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 cacheWP_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.phpou 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.
