Desinflar la compresión compatibilidad del navegador y ventajas sobre GZIP



ACTUALIZACIÓN Feb 10 2012:

ZOompf ha completado una investigación muy exhaustiva sobre este mismo tema aquí . Supera cualquier hallazgo a continuación.


ACTUALIZACIÓN del 11 de septiembre de 2010:

Se ha creado una plataforma de pruebas para esto aquí




HTTP 1.1 definiciones de GZIP y DEFLATE (zlib) para información de fondo:

" 'Gzip' es el formato gzip, y 'deflate' es el formato zlib. Le deber probablemente han llamado a la segunda 'zlib' en lugar de evitar confusión con el formato de datos comprimidos desinflados sin procesar. Mientras que el HTTP 1.1 RFC 2616 apunta correctamente a la especificación zlib en RFC 1950 para la codificación de transferencia' deflate', ha habido informes de servidores y navegadores que producen incorrectamente o esperan desinflar raw datos según la especificación de deflate en RFC 1951, más notablemente Productos de Microsoft. Así que a pesar de que el' desinflar ' codificación de transferencia utilizando el zlib format would be the more efficient approach ( and in fact exactly para qué fue diseñado el formato zlib), usando la transferencia' gzip' codificación es probablemente más fiable debido a una elección desafortunada de nombre por parte de los autores HTTP 1.1."(fuente: http://www.gzip.org/zlib/zlib_faq.html)

Entonces, mi pregunta: si envío datos de deflación sin procesar sin envoltura zlib (o gzip, para el caso) ¿hay algún navegador moderno (por ejemplo, IE6 y arriba, FF, Chrome, Safari, etc) que no puede entender la deflación cruda ¿datos comprimidos (suponiendo que el encabezado de solicitud HTTP "Accept-Encoding "contenga " deflate")?

Los datos de deflate SIEMPRE serán unos pocos bytes más pequeños que GZIP.

Si todos estos navegadores pueden decodificar con éxito los datos, lo que desventajas hay que enviar RAW deflate en lugar de zlib?



ACTUALIZACIÓN del 11 de septiembre de 2010:

Se ha creado una plataforma de pruebas para esto aquí

Author: David Murdoch, 2009-10-15

4 answers

ACTUALIZACIÓN: Los navegadores han estado eliminando el soporte para raw deflate. zOompf ha completado una investigación muy exhaustiva sobre este tema aquí . Desafortunadamente, parece que raw deflate NO es seguro de usar.


Comprobar http://www.vervestudios.co/projects/compression-tests/results para más resultados.

Estos son los navegadores que se han probado:

/*  Browser                       DEFLATE      ZLIB     */
    XP Internet Explorer 6        PASS         FAIL
    XP Internet Explorer 7        PASS         FAIL
    XP Internet Explorer 8        PASS         FAIL
    Vista Internet Explorer 8     PASS         FAIL
    XP Firefox 3.6.*              PASS         PASS
    XP Firefox 3.5.3              PASS         PASS
    XP Firefox 3.0.14             PASS         PASS
    Win 7 Firefox 3.6.*           PASS         PASS
    Vista Firefox 3.6.*           PASS         PASS
    Vista Firefox 3.5.3           PASS         PASS
    XP Safari 3                   PASS         PASS
    XP Safari 4                   PASS         PASS     
    XP Chrome 3.0.195.27          PASS         PASS
    XP Opera 9                    PASS         PASS
    XP Opera 10                   PASS         PASS
    XP Sea Monkey 1.1.8           PASS         PASS
    Android 1.6 Browser (v4)*     N/A          N/A
    OS-X Safari 4                 PASS         PASS
    OS X Chrome 7.0.517.44        PASS         PASS
    OS X Opera 10.63              PASS         PASS
    iPhone 3.1 Safari             PASS         PASS

* Android Envía encabezado de solicitud HTTP " Accept-Encoding: gzip". Desinflar no está permitido.


Concluyo que podemos siempre enviar raw DEFLATE (cuando el encabezado de solicitud HTTP "Accept-Encoding" contiene "deflate") y el navegador será capaz de interpretar correctamente los datos codificados. ¿Puede alguien probar que esto está mal?

nota: La implementación nativa de.NET de DEFLATE (System.IO.Compression.DeflateStream) es raw DEFLATE. También apesta. Utilice zlib.net para toda su desinflación. NET requiere.

 36
Author: David Murdoch,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-05-19 09:47:56

El navegador Android 1.6 (v4) falla tanto en la prueba zlib como en la prueba deflate en tu página. Lo he añadido a tu lista.

 6
Author: Josef Pfleger,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-10-22 07:06:45

¿No es el caso que AddOutputFilterByType DEFLATE usando mod_deflate envía por gzip por defecto?

 1
Author: Paul Irish,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-08-26 17:48:51

Por lo que sé, sí, prácticamente "siempre puedes enviar DESINFLAR raw y todo estaría bien"... no hay "siempre", pero sobre todo casos. si no, este es el problema del navegador.

 -1
Author: Letterman,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-10-17 02:24:12