La mise en cache

La mise en cache est un moyen pas cher et efficace pour améliorer les performances d'une application Web. En stockant les données relativement statiques dans le cache et en le signifiant à partir du cache à la demande, nous économisons le temps nécessaire pour générer les données.

Utilisation du cache dans Yii concerne principalement la configuration et l'accès à un composant de l'application cache. La configuration de l'application suivant spécifie un composant de cache qui utilise memcache avec deux serveurs de cache.

array(
    ......
    'components'=>array(
        ......
        'cache'=>array(
            'class'=>'system.caching.CMemCache',
            'servers'=>array(
                array('host'=>'serveur1', 'port'=>11211, 'weight'=>60),
                array('host'=>'serveur2', 'port'=>11211, 'weight'=>40),
            ),
        ),
    ),
);

Lorsque l'application est en cours d'exécution, le composant de cache peut être consulté via Yii::app()->cache.

Yii fournit des composants de cache différentes qui peuvent stocker des données mises en cache dans différents médias. Par exemple, le composant CMemCache encapsule l'extension PHP memcache et utilise la mémoire comme support de mémoire cache, le composant CApcCache encapsule l'extension PHP APC et le composant CDbCache stocke les données en mémoire cache dans la base de données de composants. Ce qui suit est un résumé des éléments de cache disponibles :

  • CMemCache: PHP utilise l'extention memcache.

  • CApcCache: PHP utilise l'extension APC.

  • CXCache: PHP utilise l'extension XCache.

  • CEAcceleratorCache: PHP utilise l'extension EAccelerator.

  • CDbCache: utilise une table de base de données pour stocker les données mises en cache. Par défaut, il va créer et utiliser une base de données SQLite3 sous le répertoire d'exécution. Vous pouvez spécifier explicitement une base de données pour qu'elle utilise en définissant sa propriété connectionID.

  • CZendDataCache: utilise Zend Cache de Données comme support de mise en cache sous-jacent.

  • CFileCache: utilise des fichiers pour stocker des données en mémoire cache. Ceci est particulièrement adaptée pour mettre en cache gros morceau de données (telles que les pages).

  • CDummyCache: présente cache factice qui ne fait pas la mise en cache du tout. Le but de ce composant est de simplifier le code qui a besoin de vérifier la disponibilité de cache. Par exemple, au cours du développement ou si le serveur ne prend pas en charge la mémoire cache réelle, nous pouvons utiliser ce composant cache. Quand un support mémoire cache réelle est activée, on peut passer d'utiliser le composant de cache correspondant. Dans les deux cas, on peut utiliser le même code Yii::app()->cache->get($key) pour tenter la récupération d'une partie des données sans se soucier de ce que Yii::app()->cache peut-être null.

Acstuce : Parce que tous ces composants cache s'étendent de la même classe de base CCache, on peut passer d'utiliser un autre type de cache sans modifier le code qui utilise le cache.

La mise en cache peut être utilisé à différents niveaux. Au niveau le plus bas, nous utilisons cache pour stocker un seul morceau de données, comme une variable, et nous appelons cela la mise en cache des données. Au niveau suivant, on stocke dans la mémoire cache d'un fragment de page qui est généré par une partie d'un script de vue. Et au plus haut niveau, nous enregistrons une page entière dans le cache et le servir de la mémoire cache en fonction des besoins.

Dans les prochains paragraphes, nous élaborons comment utiliser le cache à ces niveaux.

Remarque : Par définition, le cache est un support de stockage volatile. Il ne garantit pas l'existence des données mises en cache même si elle n'expire pas. Par conséquent, ne pas utiliser le cache comme un stockage persistant (Par exemple : ne pas utiliser le cache pour stocker les données de session).

$Id$

Be the first person to leave a comment

Please to leave your comment.