Realmente agradecería algo de ayuda para comprender este comportamiento de Apache.
Me estoy comunicando a PHP desde una aplicación iPhone Objective-C en application / json. La compresión Gzip está habilitada en el servidor y la solicita el cliente.
Desde mi .htaccess:
AddOutputFilterByType DEFLATE text/html text/plain text/xml application/x-httpd-php application/json
Para solicitudes pequeñas, Apache está configurando el encabezado 'Content-Length'. Por ejemplo (estos valores se generan en Objective-C desde el encabezado):
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 es un encabezado que estoy agregando establecido al tamaño de la cadena JSON sin comprimir.
Como puede ver, esta solicitud es muy pequeña (217 bytes).
Aquí están los encabezados de una solicitud más grande (282888 bytes):
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;
Tenga en cuenta que Content-Length no se proporciona.
Mis preguntas:
- ¿Por qué Apache no envía Content-Length para la solicitud más grande?
- ¿El hecho de que 'Contend-Encoding = gzip' esté configurado significa que la compresión gzip todavía funciona en la solicitud más grande, aunque no puedo verificar la diferencia de tamaño?
- ¿Hay alguna manera de hacer que Apache incluya la longitud de contenido real para estas solicitudes más grandes para informar con mayor precisión el uso de datos a los usuarios?
Esta aplicación se puede usar en planes de datos que son caros, de ahí mi deseo de informar el uso real al usuario, no un uso inflado del 30-70% (unos pocos cientos de KB adicionales pueden no parecer mucho, pero estos planes pueden costar entre $ 1 y $ 10 por MB!).
Gracias por adelantado.