J'apprécierais vraiment de l'aide pour comprendre ce comportement Apache.
Je communique avec PHP depuis une application iPhone Objective-C dans application / json. La compression Gzip est activée sur le serveur et demandée par le client.
De mon .htaccess:
AddOutputFilterByType DEFLATE text/html text/plain text/xml application/x-httpd-php application/json
Pour les petites demandes, Apache définit l'en-tête «Content-Length». Par exemple (ces valeurs sont sorties dans Objective-C à partir de l'en-tête):
Connection = "Keep-Alive";
"Content-Encoding" = gzip;
"Content-Length" = 185; <-------------
"Content-Type" = "application/json";
Date = "Wed, 22 Sep 2010 12:20:27 GMT";
"Keep-Alive" = "timeout=3, max=149";
Server = Apache;
Vary = "Accept-Encoding";
"X-Powered-By" = "PHP/5.2.13";
"X-Uncompressed-Content-Length" = 217;
X-Uncompressed-Content-Length est un en-tête que j'ajoute défini à la taille de la chaîne JSON non compressée.
Comme vous pouvez le voir, cette demande est très petite (217 octets).
Voici les en-têtes d'une demande plus importante (282888 octets):
Connection = "Keep-Alive";
"Content-Encoding" = gzip;
"Content-Type" = "application/json";
Date = "Wed, 22 Sep 2010 12:20:29 GMT";
"Keep-Alive" = "timeout=3, max=148";
Server = Apache;
"Transfer-Encoding" = Identity;
Vary = "Accept-Encoding";
"X-Powered-By" = "PHP/5.2.13";
"X-Uncompressed-Content-Length" = 282888;
Notez que Content-Length n'est pas indiqué.
Mes questions:
- Pourquoi Apache n'envoie-t-il pas la longueur du contenu pour la plus grande demande?
- Le fait que «Contend-Encoding = gzip» soit défini signifie-t-il que la compression gzip fonctionne toujours sur la plus grande demande, même si je ne peux pas vérifier la différence de taille?
- Existe-t-il un moyen d'obtenir qu'Apache inclue la longueur de contenu réelle pour ces demandes plus importantes afin de rapporter plus précisément l'utilisation des données aux utilisateurs?
Cette application peut être utilisée sur des plans de données qui sont chers, d'où mon désir de signaler l'utilisation réelle à l'utilisateur, pas une utilisation gonflée de 30 à 70% (quelques centaines de Ko supplémentaires peuvent ne pas sembler beaucoup - mais ces plans peuvent coûter entre 1 $ et 10 $ par Mo!).
Merci d'avance.