Le système de mise en cache permet de réduire significativement les temps de réponses. Celui-ci se compose en plusieurs types. Chaque type permettant de mettre en cache un certain type de traitement.
Le cache Pxxo s'utilise idéalement et automatiquement avec l'extension APC. Cependant si on le souhaite on peut utiliser un stockage sur disque.
Par defaut le cache est désactivé, cependant on peut, si on n'a pas peur d'aller vite, l'activer sans conséquence sur l'exécution du code.
Pxxo permet une exécution en cascade d'objet en objet. L'activation du cache dans l'objet le plus haut de la hiérarchie propagera le cache dans tout les sous-objets. On peut donc définir un réglage générique, mais on pourra également faire un réglage plus fort du cache dans chaque objet.
Remarques :
Le décorateur Pxxo_Widget_Decorator_Debugger contient une interface permettant de contrôler le cache Pxxo.
Le cache est désactivé par défaut. Pour activer le cache dans votre application il suffit de l'activer sur le widget de plus haut niveau (Root par exemple). Voici deux méthodes au choix :
CacheMode : ... $params['CacheMode'] = true; $o = new Root($params);
enableCache() : ... $o = new Root($params); $o->enableCache();
require_once 'Pxxo/Widget.php'; Pxxo_Widget::initRegistry(); $config = Pxxo_Registry::getInstance(); $config->cache_flag = true; ...
Une fois le cache activé vous pouvez éventuellement régler finement les types de cache au moyen de la méthode setCacheLevel (cf paragraphe suivant). Si vous gardez les types par défaut, le cache accélérera l'exécution de votre code et ne provoquera aucun comportements anormaux dans votre application.
Bien que le cache soit désactivé par défaut, vous pouvez, si vous le désirez le désactiver en utilisant la méthode disableCache() sur votre widget racine (ou dans un widget précis de la hiérarchie).
Il existe plusieurs type de cache dans Pxxo chacun de ces types est défini par plusieurs constantes :
| Constantes | Description |
|---|---|
| P_C_BASIC | Evite à Pxxo de deviner systématiquement certains informations (par ex :nom de fichiers ou de répertoire |
| P_C_TEMPLATE | |
| P_C_RESOURCE | Evite à Pxxo de créer systématiquement des fichiers de ressources pré existant |
| P_C_XSLT | Evite à Pxxo refaire des transformation XML/XSL déjà réalisée |
| P_C_WIDGET | Evite à Pxxo de réexécuter un widget complet |
| P_C_USER | |
| P_C_WIDGET2 | Evite à Pxxo de réexcuter un widget complet (variante) |
| P_C_HTTP | Evite au navigateur de réinterpréter du contenu qui n'a pas changé |
Par défaut le type de cache est le suivant :
P_C_BASIC | P_C_RESOURCE | P_C_TEMPLATE | P_C_USER
On peut modifier ce réglage avec la méthode setCacheLevel. Exemple :
$this->setCacheLevel(P_C_BASIC | P_C_RESOURCE | P_C_TEMPLATE | P_C_USER | P_C_HTTP);
Attention : le cache doit être activé pour que ces types soient pris en compte.
Les méthodes disponibles sur les composants pxxo sont :
Exemple :
class truc { function __construct($a, $b) { $this->addCacheID($a, $b, $GLOBALS['truc']); } }
Pour optimiser le temps de chargement de vos pages, il est fortement conseillé de stocker les données du cache non pas sur le système de fichier mais en mémoire vive. L'extension APC permet de stocker des données persistantes en mémoire vive. Si l'extension est chargée dans votre PHP, elle sera utilisée automatiquement par Pxxo pour le stockage des données du cache.
Sous debian vous aurez besoin des packages suivants pour pouvoir compiler correctement l'extension :
apt-get install apache2 apt-get install libapache2-mod-php5 apt-get install php-pear apt-get install php5-dev apt-get install make apt-get install apache2-prefork-dev
Ensuite son installation se fait via PECL de cette manière :
pecl install APC
Finalement il faut activer l'extension dans votre php.ini de cette manière :
extension=apc.so apc.enabled=1