Introduction : Pourquoi la mise en cache est la base d'une application PHP rapide
Chaque développeur PHP rencontre tôt ou tard un problème de performances. Lorsque la base de données commence à ralentir et que les pages mettent 3 à 5 secondes à charger, la première chose qui vient à l'esprit est la mise en cache. Ce n'est pas simplement "sauvegarder des données quelque part", c'est toute une philosophie d'optimisation.
Dans cet article, nous allons passer en revue toutes les approches populaires de mise en cache en PHP : du simple cache fichier aux solutions industrielles avec Redis et Memcached. Vous apprendrez comment choisir le bon outil et éviter les erreurs typiques. C'est parti !
1. Mécanismes de mise en cache intégrés en PHP
1.1. Mise en cache du code opcode : OPcache
Avant de parler de stockages externes, il convient de rappeler que PHP lui-même sait mettre en cache son code. Le mécanisme OPcache conserve les scripts compilés dans la mémoire vive, évitant à PHP de devoir analyser et compiler les fichiers à chaque fois.
Activation d'OPcache dans php.ini :
opcache.enable=1opcache.memory_consumption=128opcache.max_accelerated_files=10000opcache.revalidate_freq=2C'est la première ligne de défense. Sans OPcache, toute autre mise en cache sera moins efficace.
1.2. APCu — cache utilisateur en mémoire
APCu (Alternative PHP Cache) est une extension pour stocker des données arbitraires dans la mémoire partagée du processus PHP. Idéal pour les petits projets où une mise en cache distribuée n'est pas nécessaire.
Exemple de travail avec APCu :
<?php// Sauvegarder les données pendant 5 minutesapcu_store('my_key', ['data' => 'value'], 300);
// Lire les données$data = apcu_fetch('my_key');if ($data === false) { echo "Cache non trouvé, régénération";}
// Supprimer la cléapcu_delete('my_key');?>Avantages : vitesse fulgurante, simplicité. Inconvénients : les données ne vivent que sur un seul serveur.
2. Memcached : simplicité et rapidité
2.1. Qu'est-ce que Memcached et pourquoi en a-t-on besoin
Memcached est un système de mise en cache distribué en mémoire vive. Il a été créé pour accélérer les applications web dynamiques en réduisant la charge sur les bases de données. Contrairement à APCu, Memcached fonctionne comme un serveur séparé auquel on peut se connecter depuis différentes instances PHP.
2.2. Installation et connexion de Memcached
Commencez par installer le serveur Memcached :
sudo apt install memcachedsudo systemctl start memcachedEnsuite, installez l'extension PHP :
sudo pecl install memcachedVous pouvez maintenant travailler avec le cache :
<?php$memcached = new Memcached();$memcached->addServer('localhost', 11211);
// Sauvegarder pendant 10 minutes$memcached->set('user_123', ['name' => 'Ivan', 'email' => 'ivan@example.com'], 600);
// Lire$user = $memcached->get('user_123');if ($user === false) { // Charger depuis la BDD}?>2.3. Quand choisir Memcached
- Lorsque vous avez besoin d'un simple stockage clé-valeur
- Lorsque les données ont une courte durée de vie (sessions, données temporaires)
- Lorsque la persistance n'est pas requise (Memcached ne sauvegarde pas les données sur le disque)
3. Redis : un outil puissant pour des scénarios complexes
3.1. Pourquoi Redis est-il meilleur que Memcached ?
Redis n'est pas seulement un cache, c'est une base de données in-memory complète avec prise en charge de structures de données complexes : listes, ensembles, hachages, bitmaps. Contrairement à Memcached, Redis prend en charge :
- La persistance — les données ne disparaissent pas lors d'un redémarrage
- Les transactions et les scripts Lua
- Pub/Sub pour l'échange de messages
- La réplication et le clustering
3.2. Exemples de travail avec Redis en PHP
Pour travailler avec Redis, utili