Le 8 novembre 2005, Pxxo 3.0

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

  • la compatibilité avec PHP 5.
  • un nouvel algorithme de mise en cache.

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 :

  • Le niveau 0 permet d'éviter d'exécuter les templates et les transformations XML/XSL
  • Les niveaux 1 et 2 permettent d'éviter d'exécuter les actions des templates (par exemple : les requêtes SQL)

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');
// (...)
}
}
fr/release/3.0.txt · Dernière modification: 2008/03/13 15:56 (édition externe)
 
 
Recent changes RSS feed Valid XHTML 1.0 Valid CSS Powered by PHP Driven by DokuWiki
©2003-2008 Pxxo