Le 8 novembre 2005, Pxxo 3.0

Mise à part quelques améliorations diverses, les 2 principaux changements sont :

Le nouveau système de mise en cache permet de réduire significativement les temps de réponses. Celui-ci se compose de 3 niveaux :

A titre indicatif, mes tests montrent que certaines pages s'exécutent en ~3,5 secondes sans système de cache.

Avec le système de cache de niveau 0, on passe à ~3 secondes. Avec le système de cache de niveau 1 ou 2, on passe à ~0,3 secondes.

Le niveau 0 peut être activé sans conséquence sur l'exécution des objets. Par contre, les niveaux 1 et 2 doivent être utilisés en connaissance de causes.

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 fin dans chaque objet.

La stratégie la plus sûre est d'activer le cache dans l'objet le plus “haut” avec un niveau 0, et ensuite, de mettre en niveau 1 ou 2 des objets plus spécifiques.

Remarques :

La purge du répertoire contenant les fichiers cache est laissée à la charge de tmpwatch. Un mauvais réglage peut accélérer tellement le site, que celui-ci peut en oublier d'être dynamique …

Exemples :

 
// Activation du cache de niveau 0
class exemple1 extends Pxxo_Action
{
    function exemple1() { 
        $this->Pxxo_Action();
        $this->enableCache();
        $this->setCacheName('/tmp/');
        // (...)
    }
    function defaut() {
        // (...)
    }
}
 
// Activation du cache de niveau 1
// Les variables passées en paramètre du constructeur 
// sont discriminantes sur l'affichage à produire
class exemple2 extends Pxxo_Action
{
    function exemple2($identifiant, $options) { 
        $this->Pxxo_Action();
        $this->enableCache();
        $this->setCacheName('/tmp/');
        $this->setCacheLevel(1);  
        $this->addCacheID($identifiant, $options);
        // (...)
    }
    function defaut() {
        // (...)
    }
}
// Activation du cache de niveau 2
// L'objet utilise execlusivement les méthode getInputVar et getPersistentVar pour accèder aux varibles en provenance du navigateur
class exemple5 extends Pxxo_Action {
    function exemple5($idt) { 
        $this->Pxxo_Action();
        $this->enableCache();
        $this->setCacheName('/tmp/');
        $this->setCacheLevel(2);    
        // (...)
    }
    function defaut() {
 
        $a = $this->getInputVar('truc');
// (...)
    }
function lister() {
       $b = $this->getPersitentVar('truc');
// (...)
}
}