1 pièce(s) jointe(s)
compression de réponse, ob_gzhandler et autres
Bonjour,
Ce matin je me suis rendu compte que la compression des appels à certaines de mes pages ne fonctionnait plus.
J'ai les mêmes réactions sur ma machine de dev(wampserver) ainsi qu'en prod (IIS)
voici sommairement le code que j'utilisai (et qui fonctionnait) jusque la :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
| $reponse = "abcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefgh
abcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefg [...]";
if(function_exists('ob_gzhandler'))
{
ob_start('ob_gzhandler');
}
else {
ob_start();
}
echo $reponse;
ob_end_flush(); |
Sur les deux machines je n'ai aucun message d'erreur, function_exists('ob_gzhandler') renvoit bien true.
Le résultat est bien affiché correctement dans le navigateur, par contre si je vais consulter les paramètres de l'appel avec les outils de développement de Firefox ou Chrome, il n'y est fait aucune mention de compression :
- il n'y a pas de Content-Encoding:gzip
- La taille "transférée" est égale a la taille "décompressée" (ce qui n'était pas le cas avant)
J'ai commencé à bidouiller pour trouver la source de ce problème, et j'ai utilisé une méthode de compression alternative :
Code:
1 2 3
|
header("Content-Encoding: gzip");
echo gzencode($reponse, 9, FORCE_GZIP); |
Le résultat est identique à celui décrit précédemment.
La ou je ne comprend plus , c'est que si je commente la première ligne de cette seconde méthode :
Code:
1 2 3
|
//header("Content-Encoding: gzip");
echo gzencode($reponse, 9, FORCE_GZIP); |
le navigateur reçoit bien une réponse illisible, et bien plus petite que précédemment, ce qui me laisse croire que le gzencode fonctionne.
par contre si je décommente "header("Content-Encoding: gzip")", alors les données reçues font bien la même taille (à 2 octets près) que si j'avais simplement fait uniquement un "echo $response";
Cerise sur le gâteau, si je vais consulter un site permettant de vérifier si les pages sont compréssées (par ex https://varvy.com/tools/gzip/) :
avec la première ou la seconde méthode, il me répond que ma réponse est compressée ...
Par contre en utilisant fiddler, la taille des réponses affichées sont identiques à la taille affichée par Firefox ou Chrome ( c'est à dire non compressée).
Qui dois-je croire ? mes réponses sont elles compressées ?
Si il n'y a pas de compression, ou est mon erreur ?
(le script d'exemple est en PJ)
Merci d'avance