====== La gestion du cache ====== ===== Fonctionnement ===== 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 [[http://www.php.net/apc/|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 [[fr:doc:pxxo_widget_decorator_debugger|Pxxo_Widget_Decorator_Debugger]] contient une interface permettant de contrôler le cache Pxxo. ===== Type de Cache ===== 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); ===== Réglages ===== Les méthodes disponibles sur les composants pxxo sont : * **enableCache()** : Active le mécanisme de cache pour le widget et ses fils * **disableCache()** : Désactive le mécanisme de cache pour le widget et ses fils * **setCacheLevel($level)** : Permet de régler le niveau de cache * **setCacheOptions($n)** : Permet de régler finement son cache * **addCacheID(...)** : Tout les paramètres transmis à cette méthode serviront à calculer un identifiant discriminant pour la mise en route du cache. D'un appel sur l'autre, la valeur de ces variables permettra de savoir s'il s'agit d'un appel strictement identique (ne nécessitant pas une rééxécution) ou s'il s'agit d'un appel différent. Exemple : class truc { function __construct($a, $b) { $this->addCacheID($a, $b, $GLOBALS['truc']); } }