TUTORIEL PHP 
Le cache par la pratique
Après l'accélération de code, le cache est la méthode la plus facile pour accélérer un site web existant : voici une approche pratique sans dépendance externe. (31/01/2005)
(fourni par Direction PHP)

<< 1. Introduction
2. L'anti-PEAR
3. Préparation
4. Cache en mémoire vive
5. Améliorations
6. Cache avec fichier et utilisation du cache

L'anti-PEAR
Bien que j'aime PEAR, je ne peux pas l'utiliser dans tous les projets, et je n'ai pas l'intention de l'installer pour utiliser simplement les mécanismes de cache. Étant donné que j'ajoute le cache sur un site Web qui présente des symptômes de ralentissement, je préfère disposer d'une bibliothèque personnalisée de mon cru.

Le concept du cache est très simple. Un cache est un mécanisme capable d'intercepter le résultat d'une action particulière et de le sauver dans un endroit particulier, accessible rapidement. Les prochaines requêtes du même type seront alors traitées avec ce cache, et non pas recalculées. Le contenu ainsi sauvé est remis à jour suivant un calendrier précis, ou bien après certains événements.

La plupart des gens pensent qu'un cache doit être rafraîchi à une fréquence prédéfinie, mais ce n'est pas nécessaire le cas. Par exemple, si vous mettez en cache des données basées sur un fichier, vous pouvez simplement vérifier que le fichier n'a pas été modifié depuis la mise en cache. Lorsque la date de modification d'un fichier dépasse celle du cache, il est temps de faire le rafraîchissement. Mieux encore, vous pouvez combiner les deux techniques : vous ne vérifiez la date de modification du fichier qu'une fois de temps en temps. Vous allez encore réduire la charge sur le disque.

L'une des questions primordiales du cache est de savoir où placer les données. Comme les mécanismes de cache sont généralement ajoutés pour des questions de vitesse, il faut trouver le medium de stockage le plus rapide possible. La mémoire vive est définitivement le système le plus rapide, et c'est là que l'extension SHMOP entre en scène : c'est une des extensions de mémoire partagée de PHP.

Malheureusement, la mémoire est aussi une ressource très limitée, et SHMOP n'est pas disponible sur Windows, à moins de ne faire fonctionner PHP qu'en module dans le serveur Web (Apache ou IIS). Par conséquent, nous avons besoin d'un mécanisme de sauvegarde sur le disque, qui sera déclenché dans 2 circonstances : soit nous utilisons Windows, soit la conservation de la mémoire est primordiale.

Je suis certain que les mots de "fichiers sur le disque" vous sont venus à l'esprit immédiatement : ce n'est pas rare, et ce n'est pas non plus une mauvaise idée. Accéder à un fichier sur un disque peut sembler être une proposition coûteuse, en termes de performances, mais si votre système d'exploitation est optimisé, il va automatiquement compenser ce coût. On peut ramener le problème à cette constatation : si le script qui a besoin du cache est exécuté très fréquemment, alors l'OS va probablement mettre le fichier dans son cache mémoire, et accélérer encore la vitesse de lecture. Sinon, l'impact du chargement du fichier sur le disque sera minimal, comparé au temps d'exécution du script, et vous y gagnerez de toute manière.

Je sais que je simplifie un peu le problème ici, car j'omets différents facteurs, tels que l'indépendance du serveur avec le mécanisme de cache, ou du nombre de scripts utilisé par votre application. N'oubliez pas que je présente ici le cache comme une solution rapide à vos problèmes d'optimisation, et que vous aurez toujours à optimiser vos scripts. Si vous êtes amenés à utiliser des systèmes de cache un peu partout sur votre site web, alors votre problème est global, et vous devez étudier systématiquement votre application pour trouver le goulot d'étranglement, avant de risquer un peu plus la stabilité de votre serveur.

Prenons un exemple : supposez que votre site Web lise des bannières dans une source externe, et que, pour une raison quelconque liée au fonctionnement de la régie publicitaire, vous devez lire ces publicités au moment de la génération de la page, au lieu de simplement utiliser un petit morceau de JavaScript. C'est une situation dans laquelle votre application ne dépend pas de vos erreurs ou de votre cache : c'est la régie de publicité qui est lente. Il faut peut-être améliorer la connectivité entre les serveurs de la régie et les vôtres.

Par conséquent, comme vous ne pouvez pas modifier le code de la régie afin de l'accélérer, vous décidez de mettre en place un système de cache, et votre première question est : où donc placer le contenu du cache ? Si vous avez quelques bannières pour tout votre site, vous pourriez simplement mettre cela en mémoire vive. D'un autre côté, si vous avez un groupe de bannières pour chaque page, vous pourriez consommer rapidement toute votre mémoire, et en priver les autres processus qui en ont besoin, comme les processus du serveur Web.

  Forum

Réagissez dans les forums de JDN Développeurs

Même si vous travaillez sur une plate-forme Unix, il n'est pas inutile d'avoir une bibliothèque de cache qui fonctionne à la fois en mémoire et sur le disque. De cette manière, vous pouvez utiliser la RAM pour les pages les plus fréquemment sollicitées, et les fichiers pour celles qui sont moins souvent réclamées.

<< 1. Introduction
2. L'anti-PEAR
3. Préparation
4. Cache en mémoire vive
5. Améliorations
6. Cache avec fichier et utilisation du cache
 
Rédaction JDN Développeurs
 
Accueil | Haut de page
 
 





Quand achetez-vous le plus en ligne ?
Du lundi au vendredi
Le samedi
Le dimanche

Tous les sondages