ACTUALIZACIÓN 10 de febrero de 2012:
zOompf ha completado una investigación muy exhaustiva sobre este mismo tema aquí . Supera cualquier hallazgo a continuación.
ACTUALIZACIÓN 11 de septiembre de 2010:
Se ha creado una plataforma de prueba para esto aquí
Definiciones HTTP 1.1 de GZIP y DEFLATE (zlib) para obtener información general:
"'Gzip' es el formato gzip, y 'deflate' es el formato zlib . Probablemente deberían haber llamado al segundo 'zlib' en su lugar para evitar confusiones con el formato de datos comprimidos sin formato deflate. Mientras que HTTP 1.1 RFC 2616 apunta correctamente a la especificación zlib en RFC 1950 para la codificación de transferencia 'desinflar', ha habido informes de servidores y navegadores que producen incorrectamente o esperan datos de desinflado sin procesar según la especificación de desinflado en RFC 1951, sobre todo productos de Microsoft . transferir la codificación utilizando el formato zlib sería el enfoque más eficiente ( y de hecho exactamente para lo que se diseñó el formato zlib), usar la codificación de transferencia 'gzip' es probablemente más confiable debido a una desafortunada elección de nombre por parte de los autores de HTTP 1.1 ". (fuente: http://www.gzip.org/zlib/zlib_faq.html )
Entonces, mi pregunta: si envío datos RAW desinflados sin envoltorio zlib (o gzip, para el caso), ¿hay navegadores modernos (por ejemplo, IE6 y superiores, FF, Chrome, Safari, etc.) que NO puedan entender el desinflado sin procesar datos comprimidos (asumiendo que el encabezado de solicitud HTTP "Accept-Encoding" contiene "deflate")?
Los datos desinflados SIEMPRE serán unos pocos bytes más pequeños que GZIP.
Si todos estos navegadores pueden decodificar con éxito los datos, ¿qué desventajas hay en enviar RAW deflate en lugar de zlib?
ACTUALIZACIÓN 11 de septiembre de 2010:
Se ha creado una plataforma de prueba para esto aquí
fuente
Respuestas:
ACTUALIZACIÓN: Los navegadores han dejado de admitir el desinflado sin procesar. zOompf ha completado una investigación muy exhaustiva sobre este mismo tema aquí . Desafortunadamente, parece que el desinflado crudo NO es seguro de usar.
Consulte http://www.vervestudios.co/projects/compression-tests/results para obtener más resultados.Estos son los navegadores que se han probado:* Android envía el encabezado de solicitud HTTP "Accept-Encoding: gzip". No se permite desinflar.
Concluyo que siempre podemos enviar DEFLATE sin procesar (cuando el encabezado de la solicitud HTTP "Accept-Encoding" contiene "deflate") y el navegador podrá interpretar correctamente los datos codificados. ¿Alguien puede probar que esto está mal?
nota: la implementación nativa de .NET de DEFLATE (System.IO.Compression.DeflateStream) es DEFLATE sin formato. También apesta. Utilice zlib.net para todas sus necesidades de desinflado de .NET.fuente
El navegador Android 1.6 (v4) falla tanto en la prueba zlib como en la prueba de desinflado en su página. Lo agregué a tu lista.
fuente
¿No es el caso que el
AddOutputFilterByType DEFLATE
uso de mod_deflate envía por gzip por defecto?fuente
AddOutputFilertByType DEFLATE
gzip la respuesta en lugar de desinflarla por defecto (hasta donde yo sé).Gzip
esdeflate
+ un encabezado de 10 bytes + un pie de página de 8 bytes, lo que significa queGzip
SIEMPRE será más grande quedeflate
... entonces, ¿por qué deberíamos usar gzip? (consulte en.wikipedia.org/wiki/Gzip#File_format para obtener un desglose de lo que está hecho gzip). Dicho esto, no estoy seguro de cómo configurarlodeflate
como método de compresión preferido en Apache.Por lo que yo sé, sí, prácticamente "siempre puedes enviar DEFLATE sin procesar y todo estará bien" ... no hay "siempre", pero la mayoría de los casos. si no, este es un problema del navegador.
fuente
deflate
(es decir, no zlib , sin encabezados) solo funcionará en IE7 siencoding:gzip
y (solo probado en chrome v24)encoding:deflate
en chrome .