Utilisation de PEAR/Cache/Lite/Function.php
Pour finir, étudions un cas plus particulier : la mise en cache des
appels à certaines fonctions ou méthodes de votre programme. Si vous
avez des fonctions lourdes dont le résultat ne change pas souvent,
vous pouvez utiliser le module Cache_Lite_Function pour mettre en
cache leurs appels sans pour autant cacher le reste de la page.
Reprenons notre exemple précédent en créant une fonction :
<?php
$val = divisible(7);
echo($val);
echo(date('H:i:s'));
echo('<br>');
$val = divisible(9);
echo($val);
function divisible($nbr) {
for($i = 0; $i<10000 ; $i++) {
if
(($i % $nbr)==0) {
echo($i);
echo('<br>');
}
}
return
'valeur retournée inutile mais c\'est pour l\'exemple<br>';
}
?>
Effectuons maintenant la même chose mais en utilisant Cache_Lite_Output
pour cacher les appels de fonction. Pour simplifier, le cache aura
une durée de vie de 30 secondes pour les deux blocs.
<?php
// On charge Cache_Lite
require_once('Cache/Lite/Function.php');
// On définit quelques options :
// - le répertoire où seront stockés les fichiers de cache
// - la durée de vie du cache (ici 30 secondes)
$options = array(
'cacheDir' => '/tmp/',
'lifeTime'
=> 30
);
// On crée un objet Cache_Lite_Output
$Cache_Lite_Output = new Cache_Lite_Function($options);
// Appel à la fonction en intégrant la gestion du cache
$val = $Cache_Lite_Output->call('divisible', 7);
echo($val);
echo(date('H:i:s'));
echo('<br>');
// Appel à la fonction en intégrant la gestion du cache
$val = $Cache_Lite_Output->call('divisible', 9);
echo($val);
function divisible($nbr) {
for($i
= 0; $i<10000 ; $i++) {
if
(($i % $nbr)==0) {
echo($i);
echo('<br>');
}
}
return
'valeur retournée inutile mais c\'est pour l\'exemple<br>';
}
?>
Encore une fois, la mise en uvre est
très simple. On a simplement remplacé l'appel de la fonction par
un appel à Cache_Lite_Function en lui passant le nom de la fonction
et ses paramètres. La gestion du cache est automatique. Si le résultat
de la fonction pour les paramètres donnés a déjà été calculé, le
cache sera utilisé sinon la fonction sera appelée...
Quant aux performances, on conserve 130 requêtes par seconde avec
cette dernière version, alors que le script original sans cache
arrive péniblement à 20 requêtes par seconde.
D'autres subtilités sont possibles avec Cache_Lite_Output, notamment
pour cacher des appels de méthodes, mais cela sortirait du cadre
de cet article. Referez-vous au fichier d'exemple fourni avec le
package de Cache_Lite si vous voulez en savoir un peu plus.
Conclusion
: cache ou pas cache ?
Nous arrivons au terme de cet article. Même si l'on s'est arrêté
sur une solution de cache côté script, nous avons vu rapidement
les diverses solutions de cache que l'on peut utiliser avec PHP.
Alors, cache ou pas cache ?
En premier lieu, tout dépend de votre
type d'hébergement :
- si vous êtes en hébergement mutualisé, la question devient : cache
côté script ou pas de cache du tout ;
- si vous êtes en hébergement dédié chez un prestataire, vous pouvez
également vous poser la question du cache d'opcode ;
- si vous êtes votre propre hébergeur, vous pouvez étudier également
la possibilité d'un cache système.
Un cache système est quelque chose de complexe qui sort très largement
du cadre de cet article. C'est un choix d'architecture redoutablement
efficace, qui demande des moyens et de fortes compétences en administration
système.
Pour ce qui est du cache d'opcode,
la question est plus simple. Si vous n'avez pas peur de mettre les
mains dans votre installation PHP, c'est une manière très simple
de booster vos performances sans retoucher la moindre ligne de code.
Il est particulièrement recommandé dans le cas de scripts PHP longs
et complexes.
Le cache " côté script " est la solution
la plus souple, à condition de ne pas avoir peur de plonger dans
votre code PHP. Si le cache est bien géré, les résultats sont excellents.
Cependant il est difficile de l'utiliser dans le cas d'un script
déjà écrit, surtout si vous n'en êtes pas l'auteur. C'est donc plus
un choix à prendre au lancement d'un projet.
Pour conclure et même si toutes les
situations ne s'y prêtent pas, l'utilisation d'un cache est un excellent
moyen de donner un coup de fouet à vos serveurs web poussifs. Au
final, en utilisant une solution de cache, vous réaliserez des économies,
au niveau du processeur, mémoire, nombre et puissance des serveurs
web. Mais surtout, vous augmentez la réactivité de vos pages vis-à-vis
de vos utilisateurs. Outre le confort de navigation, c'est primordial
si vous désirez donner une impression de confiance et de professionnalisme.
Page 1
| 2
| 3
| 4
|