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.
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 trandormation XML/XSL déjà réalisée |
| P_C_WIDGET | Evite à Pxxo de réexcuter 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égalage avec la méthode setCacheLevel. Exemple :
$this->setCacheLevel(P_C_BASIC | P_C_RESOURCE | P_C_TEMPLATE | P_C_USER | P_C_HTTP);
Les méthodes disponibles sur les composants pxxo sont :
Exemple :
class truc { function __construct($a, $b) { $this->addCacheID($a, $b, $GLOBALS['truc']); } }