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

Préparation
Le mécanisme de cache de PEAR fonctionne en mettant en cache le résultat d'une fonction ou d'une page entière. C'est très pratique, mais j'aime avoir une granularité fine. Il est possible de résoudre un problème en quelques lignes de code plutôt que par une fonction, et l'indépendance de ce code peut faire la différence entre un cache efficace et une application avec un problème en plus. Par exemple, si la fonction lente produit des informations dont le contenu change souvent, comme avec un nom d'utilisateur, mais que les autres données prennent du temps pour être calculées, comme la bannière de publicité citée ci-dessus, l'utilisation d'un cache de fonction n'est tout simplement pas possible. La seule solution serait d'afficher le nom de l'utilisateur A sur la page de B : ce n'est pas concevable.

Ma solution à ce problème est de proposer un système de cache qui soit complètement indépendant de la source de données. Dans le pire des cas, le cache fonctionnera avec des variables.

Comme vous pouvez le voir au listing 1, notre système de cache est constitué de deux de base est constitué de deux fonctions, cache_cache() et cache_get_cached_version(). Ainsi, la première fonction insère le contenu d'une variable dans le cache, alors que la seconde lit des informations dans le cache.

Les fonctions sont très simples, grâce au fait qu'elles ne font que relayer les informations aux systèmes de stockage. Il y a tout de même quelques points intéressants à noter. Premièrement, le medium 'préféré' est déterminé par la première lettre associée à chaque identifiant de variable. Par exemple, nous allons utiliser l'identifiant F-ADPAGE1, dont le contenu sera placé sur le disque, alors que M-ADPAGE1 sera stocké dans un segment de mémoire partagé.

Cela peut sembler un peu cavalier, mais si vous considérez notre bibliothèque comme une extension d'une application existante, alors il est primordial de pouvoir ajouter le cache très facilement dans le code, et moins vous ajouterez de lignes, moins vous perturberez votre application. La dépendance au format d'identifiant est aussi mitigée par le fait que le système effectue différentes vérifications avant d'effectuer la tâche.

Vous pourrez aussi noter les premières lignes de chaque fonction, qui vérifient que si PHP dispose des fonctions de partage de mémoire. Lorsque ce n'est pas le cas, la bibliothèque force alors toujours les contenus sur le disque.

C'est effectivement un palliatif où le programme impose un comportement malgré la commande du développeur. Cependant, si vous appliquez la bibliothèque dans un projet PHP en cours, l'extension SHM ne sera pas forcément installée, ni installable. Elle n'est pas compilée par défaut, et au mieux, il vous faudra une recompilation : ce n'est pas forcément le meilleur moment pour cela. Vous pouvez aussi ajouter quelques commandes personnelles dans cette partie, comme enregistrer un message ou vous envoyer un courriel. En fonction de votre niveau de confiance dans la bibliothèque, vous pouvez aussi afficher une erreur et terminer le script : de cette manière, vous aurez un contrôle absolu sur le comportement de la bibliothèque de cache. Il reste à voir si vous voulez recompiler PHP ou changer le système de stockage du cache.

  Forum

Réagissez dans les forums de JDN Développeurs

Finalement, comme vous l'avez sûrement noté, j'utilise un mécanisme de délai pour savoir si un fichier du cache est encore valide. La raison à cela est que la bibliothèque est conçue pour être légère, et simple à mettre en œuvre. Ajouter votre propre mécanisme de validation devrait être facile.

<< 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