Les problèmes de performance auxquels nous sommes confrontés avec les CMS Php nous amènent à chercher des solutions qui, lorsqu’elles s’empilent, peuvent aller jusqu’à exactement le contraire de l’effet recherché !
Les plugins : seules solutions dans le cadre de hébergement mutualisé
WordPress est aujourd’hui une des toutes premières solutions d’édition de contenus Web. Parmi les très bons plugins WordPress, signalons WP Super Cache et aussi DB Cache Reloaded. Le premier génère automatiquement des pages statiques évitant l’exécution répétée des scripts Php. Quant au second, il éviterait l’exécution répétée des requêtes SQL. Pour ceux d’entre vous qui ont fait le choix d’un hébergement mutualisé, ce sont là, sans doute, les deux meilleures solutions du moment.
Au vu des tests, l’accélération que sont sensées produire ces deux extensions est très loin d’être perceptible !
Cache Apache en mode dédié
Il y a aussi les mécanismes de cache spécifiques à Apache qui s’expriment au travers de modules supplémentaires à activer ou à installer.
Dans le fichier de configuration du serveur Apache de votre machine dédiée /etc/httpd/conf/httpd.conf sous CentOS, veillez à ce que les modules mod_cache, mod_disk_cache, mod_file_cache, mod_mem_cache soient chargés en les décommentant :
LoadModule cache_module modules/mod_cache.so #LoadModule disk_cache_module modules/mod_disk_cache.so #LoadModule file_cache_module modules/mod_file_cache.so LoadModule mem_cache_module modules/mod_mem_cache.so
Ajoutez, par exemple, en tant que directives globales :
#Un cache de 64 MB MCacheSize 64000 MCacheMaxObjectCount 1000 MCacheMaxObjectSize 256000 MCacheMinObjectSize 1
Enfin, à l’intérieur des directives relatives à votre VirtualHost, ajoutez ceci par exemple :
CacheEnable mem / #CacheEnable disk / #CacheEnable fd / CacheMaxExpire 3600 #CacheMinFileSize 1 #CacheMaxFileSize 65536 #CacheRoot /tmp #CacheDirLevels 3 #CacheDirLength 2
Pour être prise en compte, ces directives exigent le rechargement de votre serveur Apache : service httpd restart sous CentOS.
PageSpeed, une solution signée Google
Google vient de mettre à la disposition des administrateurs des plates-formes Web le module Apache PageSpeed. L’éditeur du plus grand moteur de recherche annonce une division du temps de chargement par deux. Cette solution peut aisément se cumuler avec la précédente !
Cache MySQL en mode dédié
Très simple à réaliser, il suppose que vous puissiez intervenir sur la configuration du serveur, ce qui est strictement impossible en mode mutualisé.
Éditez le fichier /etc/my.cnf sous CentOs et, pour un cache de 256 Mo, ajoutez les lignes suivantes :
query_cache_size=1 query_cache_size=268435456
Après avoir modifié votre fichier de configuration, rechargez MySQL.
Accélérateur PHP en mode dédié
Si vous êtes en mode dédié, l’extension PHP eaccelerator sous CentOS vous fournira entière satisfaction. xcache et apc sont également de remarquables accélérateurs.
Vous pouvez aussi faire les modifications suivantes au niveau de votre fichier de configuration /etc/php.ini :
zlib.output_compression = On zlib.output_compression_level=9 memory_limit=64K
Après modifications, vous devez recharger le service Apache service httpd restart.
Pour eAccelerator, je vous recommande d’apporter les modifications suivantes au niveau du fichier de configuration /etc/php.d/eaccelarator.ini :
eaccelerator.enable = 1 eaccelerator.keys = "shm" eaccelerator.sessions = "shm" eaccelerator.content = "shm" eaccelerator.shm_only = 1
Pour fixer la taille utilisée à 64MB :
eaccelerator.shm_size = "64"
Memcache sous PHP et W3 Total Cache (Mode dédié)
Cette méthode est tout particulièrement réservée aux serveurs dédiés. Vous devez tout d’abord installer memcached sous CentOS en ayant ajouté au préalable les dépôts stables nécessaires à l’opération et le paquet yum-priorities :
- yum update
- yum install php-pear
- yum install php-devel
- yum install httpd-devel
- yum install gcc make
- yum install zlib-devel
- yum install libevent libevent-devel
- yum install memcached php-pecl-memcache
Vous disposez d’une méthode alternative pour installer l’extension php : pecl install memcache.
Une fois installé, vous devez lancer le service memcached : service memcached start.
Sous WordPress, vous pouvez lui associer le plugin WordPress W3 Total Cache. Son installation nécessite d’avoir désactivé les autres plugins de gestion de cache et tout particulièrement DB Cache Reloaded cité ci-dessus. Après avoir activé l’extension W3 Total Cache, cliquez sur le bouton Compatibility Check sur la page de l’extension et appliquez les instructions d’installations… si nécessaire.
Activez alors les quatre niveaux de cache (page, minify, database et object) selon la méthode Memcached à partir des listes déroulantes.
Proxy transparent
Antoine Benkemoun a réalisé un article « éclairant » au sujet de la mise en place d’un reverse proxy avec Squid. Dans la même famille, signalons encore l’excellent proxy, Varnish.
Documentation officielle
- eAccelerator
- cache de requêtes MySQL
- Guide la mise en cache – Serveur Apache HTTP Version 2.2
- Memcached