A. Ajouter la compression gzip
- <?php
- ob_start("ob_gzhandler");
- // Le reste des traitements PHP
- ob_end_flush();
- ?>
B. Placer une fonction callback personnelle
- <?php
- ob_start("maFonctionRegexp");
-
- function maFonctionRegexp($contenu) {
- traiter($contenu);
- }
- ?>
|
L'output buffering peut également servir à la compression des données, et donc à l'optimisation de la transmission des pages. Quasiment tous les serveurs proposant PHP ont également accès à la compression gzip en sortie, et PHP, depuis sa version 4.0.4, dispose de la fonction ob_gzhandler() , qui gère directement l'envoi de données compressées dans le tampon. Par sécurité, si le navigateur ne reconnaît pas l'encodage gzip, cette fonction ne compresse pas les données.
A.
ob_gzhandler() ne s'utilise pas tel quel, mais en combinaison avec ob_start() : ob_gzhandler() agit comme une fonction de callback, c'est-à-dire une fonction utilisée en argument d'une autre. Il suffira donc de commencer la mise en tampon avec ob_start("ob_gzhandler") .
Cette technique permet de mettre en place la compression d'une page PHP, sans devoir faire appel à mod_gzip , qui n'est pas forcément disponible sur le serveur. Les taux de compression pouvant facilement atteindre les 80%, cette technique alternative devrait prouver son intérêt.
B. Enfin, toute fonction placée en argument de ob_start() sera appliquée de la même manière au contenu du tampon. On pourra par exemple créer une fonction de traitement du texte par expression régulière, et chaque chaîne ajoutée au tampon passera par cette fonction. La fonction de callback ainsi créée pourra prendre en compte le contenu du tampon en argument.
|