Cette version vise principalement à améliorer les performances des versions précédentes grâce notamment à la notion de cache. Cette notion est très importante car cela permet de “compiler” ses widgets, de minimiser les traitements du serveur et les traitements du navigateur.
Les gains de vitesse sont IMPRESSIONNANTS. Plusieurs tests montrent une augmentation de 50% du nombre de widget créés/exécutés par seconde.
Le stockage du cache se fait soit sur disque soit en mémoire partagée. Le choix du type de stockage est fait automatiquement en fonction de la présence du module APC dans PHP.
Il existe plusieurs types de cache dans Pxxo chacun de ces types est défini par plusieurs constantes :
| Constantes | Description |
|---|---|
| P_C_BASIC | Évite à Pxxo de deviner systématiquement certaines informations (par ex : nom de fichiers ou de répertoire) |
| P_C_TEMPLATE | |
| P_C_RESOURCE | Évite à Pxxo de créer systématiquement des fichiers de ressources pré existant |
| P_C_XSLT | Évite à Pxxo de refaire des transformations XML/XSL déjà réalisées |
| P_C_WIDGET | Évite à Pxxo de réexécuter un widget complet |
| P_C_USER | |
| P_C_WIDGET2 | Évite à Pxxo de réexécuter un widget complet (variante) |
| P_C_HTTP | Évite 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);
La classe Pxxo_Xslt utilise automatiquement l'extension xslcache si celle-ci est chargée dans PHP.
Maintenant Pxxo ne démarre plus automatiquement une session PHP. La session est démarrée automatiquement par Pxxo si on utilise des fonctions qui en ont besoin (ex: getPersistentVar).
Pour démarrer une session manuellement dans un widget on pourra utiliser la méthode checkSession
Quelques réglages ont également été fait pour rendre la gestion de sessions plus “standard”.
Pxxo gère au travers d'un nouveau objet Pxxo_Response les entêtes HTTP envoyées au navigateur.
Cet objet est directement utilisable dans les widgets au travers de l'attribut $this→Response
Le ZendFramework n'est plus intégré au package de Pxxo, il est maintenant dans un package PEAR séparé. Un lien de dépendance permet de l'installer automatiquement. Au passage on passe à la version 1.0.4.
La méthode dumphead de Pxxo_Widget prenait en argument un paramètre $return (true ou false). Ce paramètre est supprimé, il est avantageusement remplacé par la nouvelle méthode gethead qui retournera par défaut une chaîne de caractère constituant les entêtes HTML du widget.
Par ailleurs, cette méthode gethead accepte un argument $type qui peut prendre deux valeurs : html (sa valeur par défaut) et array qui permet de retourner un tableau php décrivant les ressources CSS/JS du widget.
PHP5 permet de faire du typage d'objet implicite. Pxxo l'utilisera progressivement dans ces différentes méthodes lorsque c'est possible et surtout lorsque c'est nécessaire. Pour le développeur c'est un confort supplémentaire car des messages d'erreur compréhensibles seront générés automatiquement lorsqu'une méthode est appelée avec des arguments d'un mauvais type.
Dans cette version, la méthode putWidget l'utilise sur son second argument qui doit être de type Pxxo_Widget.