Aller au contenu
EuroVPSEuroVPS

Le caching en PHP : OPcache, Memcached et Redis

PHP fait tourner une très grande part des sites web dynamiques, c'est pourquoi il est important que les développeurs PHP soient au courant du caching : OPcache, caches de données et caches de pages.

Par Thomas

Mis à jour le 22 octobre 20264 min de lecture
Image de couverture : le caching en PHP

Qu'est-ce que PHP ?

PHP est un langage de programmation utilisé pour créer du contenu dynamique sur une page web, comme afficher une liste d'enregistrements venant d'une base de données, récupérer de la publicité, ou afficher un fil d'actualité ou un flux Twitter. Une manière d'accélérer tout cela est le caching PHP.

Qu'est-ce que le caching ?

Les pages web se chargent plus vite quand des parties de la page, ou la page entière, sont stockées en mémoire, dans un fichier sur le serveur web, ou sur le réseau de distribution de contenu (CDN), au lieu d'être générées à chaque fois que quelqu'un demande cette URL. C'est ce qu'on appelle le caching. Il offre une meilleure expérience utilisateur, car les utilisateurs n'attendent pas aussi longtemps quand ils cliquent pour charger la page suivante.

Vous pouvez mettre en cache du contenu, comme des images, du HTML et des données. Par exemple, il n'est pas nécessaire de récupérer la même image 10 fois pour 10 personnes différentes. Mieux vaut la mettre en cache. Le cache stocke la page web avec toutes les données déjà en place, comme une liste de noms.

Lecture associée : Varnish Cache expliqué

Le livre de recettes du programmeur

Prenez un appel à la base de données. Il n'a aucun sens de lire la base 100 fois pour 100 personnes qui chargent toutes les mêmes enregistrements, quelque chose de commun à beaucoup de gens, comme le prix d'un article que vous mettez en avant en première page. Il est plus efficace de récupérer cette valeur depuis le cache.

Les applications peuvent aussi mettre en cache des réponses d'API. Par exemple, c'est par une API que fonctionne la publicité intégrée à la page. Mais c'est un contre-exemple, car vous ne mettriez pas une publicité en cache : l'annonceur montre des publicités différentes à des personnes différentes.

Le caching ne s'applique donc pas à toutes les situations. En particulier, il ne convient pas aux données qui changent souvent ou qui sont propres à chaque utilisateur.

PHP a un cache important intégré : OPcache, livré avec PHP. Chaque fois qu'un script PHP s'exécute, PHP le compile d'abord en bytecode. OPcache garde ce bytecode compilé en mémoire partagée, pour que les scripts ne soient pas recompilés à chaque requête. Assurez-vous qu'il est activé et que sa mémoire est assez grande pour votre code. C'est en général l'accélération PHP la moins chère qui existe.

PHP n'a cependant pas de cache intégré pour vos données. Pour cela, il existe des frameworks et des extensions open source, comme les clients Memcached et Redis, qui permettent au programmeur de concevoir son code pour fonctionner ainsi. Une bibliothèque cliente vérifie le cache avant d'interroger la base de données.

Le caching PHP et WordPress

WordPress a une API d'object cache qui peut s'appuyer sur Memcached ou Redis, et des plugins de page cache comme W3 Total Cache ou WP Super Cache ajoutent un cache de page entière. Cela accélérera aussi la publication de contenu dans votre CMS. Et tout code WordPress personnalisé que vous écrivez peut utiliser le caching si vous ajoutez un framework.

Régler le cache

Une objection légitime : comment un cache peut-il connaître les cinq derniers titres sans vérifier ? La réponse est qu'il ne les connaît pas.

Le caching est contrôlé par la taille et par le temps. Vous pouvez, par exemple, régler la durée du cache à 5 secondes ou à 5 minutes.

Quand la durée du cache expire, le code PHP fait l'aller-retour jusqu'au serveur de base de données ou à l'API pour vérifier si quelque chose a changé.

Les caches sont aussi limités par la taille : quand un cache est plein, les entrées utilisées le moins récemment sont évincées pour faire place aux nouvelles.

Ce qu'il faut retenir

PHP fait tourner une très grande part des sites web dynamiques.

OPcache, un cache de données et un cache de pages sont les trois couches qu'il vaut la peine de régler correctement. Si vous avez des questions, contactez notre équipe.

Extrait des archives du blog EuroVPS, publié pour la première fois le 10 août 2021.

Toutes les notes de terrain