Sortie du cache de contenu Cache PEAR
Nous commençons ensuite à explorer les technologies de mise en cache les plus couramment utilisées, ce qui fait également l'objet de cet article. Nous utilisons d’abord le package de cache dans PEAR. PEAR peut mettre en cache le contenu des fichiers, des bases de données ou de la mémoire. Prenons l'exemple des fichiers.
Voici un petit programme PHP qui n'utilise pas de cache :
pear_content_cache1.php
<?php
echo "Voici le contenu. <P>";
echo "L'heure actuelle est" . date('MdY H:i:s A', time()) .
?>
Le programme ci-dessus est très simple, maintenant nous y ajoutons une mise en cache.
pear_content_cache2.php
<?php
require_once 'Cache/Output.php';
//Définit le répertoire du cache, qui doit être accessible en écriture $cacheDir = './pear_cache';
$cache = new Cache_Output('file',array('cache_dir' => $cacheDir));
//Si la variable nocache est vide, utilisez le contenu du cache //Si vous souhaitez obtenir le dernier contenu, attribuez-le à la variable nocache if (empty($_REQUEST['nocache']))
{
// Créer un ID de cache unique // Requête + Informations sur le cookie $cache_id = $cache->generateID(array('url' => $_REQUEST,'post' =>$_POST,'cookies' => $HTTP_COOKIE_VARS) );
}
autre
{
//Si vous souhaitez obtenir le dernier contenu, l'ID est vide $cache_id = null;
}
//Vérifie si le contenu du cache correspondant à l'ID du cache est disponible si ($content = $cache->start($cache_id))
{
//Le cache existe déjà, affiche directement et termine le script echo $content;
sortie();
}
// Le contenu n'existe pas dans le cache, générer un nouveau contenu et l'écrire dans le cache echo "Ceci est le contenu. <P>";
echo "L'heure actuelle est" . date('MdY H:i:s A', time()) "<BR>";
// Écrit le contenu dans le cache echo $cache->end();
?>
Actualisez ces deux fichiers respectivement, et vous constaterez que l'heure dans la ligne "L'heure actuelle est" dans pear_content_cache1.php change avec l'actualisation, tandis que cette ligne dans pear_content_cache2.php ne change pas. En effet, pear_content_cache2.php utilise la mise en cache pour stocker le contenu demandé par l'utilisateur dans un fichier statique. Lorsque l'utilisateur demande à nouveau, le contenu est directement extrait du fichier sans qu'il soit nécessaire de recourir à un programme pour générer dynamiquement le contenu.
Pour pear_content_cache2.php, si l'utilisateur souhaite lire les dernières informations au lieu des anciennes informations dans le cache. Ensuite, vous pourrez y accéder avec http://…/pear_content_cache2.php?nocache=1 , ce qui désactivera la fonction de mise en cache. Actualisez-le et voyez que l’heure changera en conséquence.
Pour résumer l'utilisation de la classe de mise en cache de contenu PEAR :
1. Lorsque vous incluez le package PEAR, assurez-vous de définir le chemin correct.
2. Contient la classe cache dans Output.php
require_once 'Cache/Output.php'
3. Définissez le répertoire de cache
$cacheDir = './pear_cache' ;
confirmez que ce répertoire est accessible en écriture. Les données du cache seront écrites dans les sous-répertoires de ce répertoire.
4. Créer un objet cache de sortie
$cache = new Cache_Output('file',array('cache_dir' => $cacheDir));
Le premier paramètre indique que nous utilisons un cache basé sur la méthode "file", et le deuxième paramètre est un cache Tableau associé aux répertoires.
5. Générer un ID de cache unique
$cache_id = $cache->generateID(array('url' => $_REQUEST,'post' =>$_POST,'cookies' => $HTTP_COOKIE_VARS));
Ici le generateID de l'objet $cache ( ) en fournissant un tableau d'informations (URL, données HTTP POST et cookie HTTP) pour identifier de manière unique cette requête et la distinguer des autres requêtes.
6. Ajoutez une instruction de jugement logique pour voir si les données de cache correspondant à cacheID existent déjà. Si elles existent, obtenez les données et terminez le script.
si ($content = $cache->start($cache_id))
{
echo $contenu ;
sortie();
}
7. Placez le code qui génère le contenu après l'instruction logique ci-dessus et terminez en utilisant l'objet cache.
echo $cache->end();
sortie du cache de fonction PEAR cache
PEAR peut non seulement mettre en cache le contenu de sortie, mais également mettre en cache le résultat de l'appel d'une certaine fonction. C'est une fonctionnalité très intéressante. Si votre programme utilise fréquemment une certaine fonction et que le résultat de l'appel est le même, je vous suggère de l'essayer, surtout si cette fonction s'exécute lentement.
Ensuite, nous implémentons un appel tamponné à slowFunction(), une fonction qui s'exécute très lentement.
<?php
require_once 'Cache/Function.php';
$cacheDir = './pear_cache/';
$cache = new Cache_Function('file',array('cache_dir' => $cacheDir));
$arr = array('pomme', 'poire', 'pastèque');
$cache->call('slowFunction', $arr);
echo '<BR>';
$arr = array('pomme', 'poire', 'pastèque');
fonction lente($arr);
fonction fonction lente($arr = null)
{
echo "Une fonction qui s'exécute très lentement : ( <br>";
echo "L'heure actuelle est" . date('MdY H:i:s A', time()) '<br>';
foreach ($arr comme $fruit)
{
echo "J'ai mangé un $fruit <br>";
}
)
?>
Voici le résultat de l'exécution du script de l'exemple :
une fonction qui s'exécute très lentement.
L'heure actuelle est le 28 juillet 2004, 17:15:57 PM.
J'ai mangé une pomme J'ai mangé une poire J'ai mangé une pastèque
Une fonction qui s'exécute très lentement :(
L'heure actuelle est le 28 juillet 2004, 17:17:55 PM
J'ai mangé une pomme J'ai mangé une poire J'ai mangé une pastèque
Dans le code, la classe Cache/Function.php est utilisée pour exécuter la fonction de mise en mémoire tampon. La variable $cache est un objet Cache_Function qui utilise la mise en cache des fonctions basée sur les fichiers et est stockée dans le répertoire $cacheDir. Pour mettre en cache un appel de fonction, la méthode call() de l'objet Cache_Function $cache doit être utilisée comme ceci : $cache->call('slowFunction', $arr);
Ici, la fonction slowFunction() est appelée, et le paramètre est un tableau $arr, Cette fonction est mise en cache dans un fichier du répertoire $cacheDir. Tout appel ultérieur à cette fonction aura le résultat de l'exécution de la fonction renvoyé par $cache->call(). La mise en cache des fonctions et leur utilisation sont très similaires à la mise en cache du contenu, je n'entrerai donc pas dans les détails. Veuillez consulter le manuel PEAR pour plus de détails.