Pregunta

Es posible saber que los formatos de archivo HTML relacionados se comprimen utilizando la compresión gzip, del lado del servidor, (por mod_gzip en servidores Apache), y se descomprimen los navegadores compatibles. ( "Codificación de contenido")

¿Tiene esto sólo funciona para los archivos HTML / XML? Digamos que mi archivo PHP / Perl genera algunos datos simples delimitados por comas, y manda que al navegador, va a ser codificado de forma predeterminada?

¿Qué hay de plataformas como Silverlight o Flash, cuando descargan dichos datos se puede comprimir / descomprimir por el navegador / tiempo de ejecución de forma automática? ¿Hay alguna manera de probar esto?

¿Fue útil?

Solución

  

¿Esta única obra para HTML / XML   archivos?

No: es muy a menudo se utiliza para archivos CSS y JS, por ejemplo - como los que se encuentran entre lo más grande que los sitios web están hechas de (excepto las imágenes), a causa de los marcos JS y aplicaciones completas-JS, que representa una ganancia enorme!

En realidad, cualquier formato basado en texto puede ser comprimido bastante bien (en el lado opuesto, las imágenes no pueden, por ejemplo, como generalmente ya comprimidos) ; A veces, los datos JSON regresaron de Ajax-solicitudes se comprimen también - es de datos de texto, después de todo; -)

  

Permite decir mi archivo en PHP / Perl genera   algunos coma delimitado sencilla de datos, y   manda que al navegador, será   codificada por defecto?

Es una cuestión de configuración: si ha configurado el servidor para comprimir ese tipo de contenido, es probable que va a ser comprimido :-)
(Si el navegador dice que acepta datos codificado con Gzip)


He aquí una muestra de la configuración de Apache 2 (usando mod_deflate) que yo uso en mi blog:

<IfModule mod_deflate.c>
    AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript application/javascript application/x-javascript application/xml
</IfModule>

A continuación, quiero HTML / XML / CSS / JS te comprimirse.

Y aquí es lo mismo, más / menos un par de opciones de configuración que utilizan una vez, bajo Apache 1 (mod_gzip):

<IfModule mod_gzip.c>
    mod_gzip_on                   Yes
    mod_gzip_can_negotiate        Yes

    mod_gzip_minimum_file_size    256
    mod_gzip_maximum_file_size    500000

    mod_gzip_dechunk              Yes

    mod_gzip_item_include         file       \.css$
    mod_gzip_item_include         file       \.html$
    mod_gzip_item_include         file       \.txt$
    mod_gzip_item_include         file       \.js$
    mod_gzip_item_include         mime       text/html

    mod_gzip_item_exclude         mime       ^image/
</IfModule>

Las cosas que se pueden notar aquí es que no quiero demasiado pequeño (la ganancia no sería muy importante) o demasiado grande (que comer demasiada CPU para comprimir) archivos a comprimir; y quiero archivos css / html / txt / js para ser comprimido, pero no imágenes.


Si desea que los datos separados por comas para ser comprimido de la misma manera, tendrá que añadir ya sea que es de tipo de contenido o de la extensión a la configuración de su servidor web, para activar la compresión gzip para ello.

  

¿Hay alguna manera de probar esto?

Para cualquier contenido devuelto directamente en el navegador, las extensiones de Firefox Firebug o LiveHTTPHeaders son una necesidad-tienen.

Para el contenido que no pasa por el camino de comunicación estándar del navegador, puede ser que sea más difícil; Al final, puede que tenga que terminar con algo así como Wireshark para "oler" lo que realmente está pasando las tuberías ... Buena suerte con eso!

  

¿Qué hay de plataformas como Silverlight o Flash,   cuando descargan dichos datos se puede comprimir / descomprimir   por el navegador / tiempo de ejecución automática?

Para responder a su pregunta acerca de Silverlight y Flash, si se envía una cabecera Accept indicando que apoyan el contenido comprimido, Apache usará mod_deflate o mod_gzip. Si ellos no son compatibles con la compresión no van a enviar la cabecera. Será “sólo el trabajo.” - Nate

Otros consejos

Creo Apache de mod_deflate es más común que mod_gzip, porque que está incorporada y hace lo mismo. Mira la documentación para mod_deflate (vinculado anteriormente) y verá que es fácil para especificar qué tipos de archivos para comprimir, en función de sus tipos MIME. En general vale la pena comprimir HTML, CSS, XML y JavaScript. Imágenes ya están comprimidos, por lo que no se benefician de compresión.

El navegador envía una "Accept-Encoding" encabezado con los tipos de compresión que sabe comprender. El servidor busca en esto, junto con el agente de usuario y decide cómo codificar el resultado. Algunos navegadores se encuentran sobre lo que pueden comprender, así que esto es más complejo que la simple búsqueda de "desinflar" en el encabezado.

Técnicamente, cualquier respuesta HTTP / 2xx con contenido puede ser de contenido codificado utilizando cualquiera de las codificaciones de contenido válidos (gzip, zlib, desinflar, etc.), pero en la práctica es derrochadora de aplicar compresión a los tipos de imagen comunes ya que en realidad los hace más grande.

Puede definitivamente comprimir la respuesta de las páginas PHP dinámicos. El método más simple es añadir:

<?php ob_start("ob_gzhandler"); ?>  

para el inicio de cada página PHP. Es mejor para su instalación a través de la configuración de PHP, por supuesto.

Hay muchas páginas de prueba, que se encuentran fácilmente con Google :

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top