Pregunta

De una publicación anterior sobre cómo tratar de mejorar el rendimiento de mis sitios he estado analizando la compresión HTTP. He leído acerca de cómo configurarlo en IIS, pero parece ser algo global para todos los grupos de aplicaciones de IIS. Puede que no se me permita hacer esto, ya que también hay otro sitio que se ejecuta en él. Luego vi un código para poner en global.asax para lograr lo mismo por sitio web.

Vea Aquí http://www.stardeveloper.com/articles/display.html?article=2007110401&page= 1] 1

¿Es esto tan bueno como la configuración en IIS? ¿Qué tan dramático es el efecto? ¿Algún problema conocido?

¿Fue útil?

Solución

Si continúa con esto, sugeriría implementar un HttpModule versus global.asax. HttpModule le permite deshabilitar la compresión con un cambio de configuración en lugar de reconstruir y le permite armar un conjunto de compresión separado de su aplicación web.

Rich Crane tiene un módulo 2.0 bastante bueno aquí: http://www.codeplex.com/httpcompression/ si quieres ponerte en marcha rápido.

El blowery mencionado por Steven Rogers también es un HttpModule.

De lo contrario, escribir el tuyo es bastante sencillo. Un HttpModule le ofrece los mismos eventos que global.asax: BeginRequest, EndRequest y eventos más detallados, como PostReleaseRequestState y PreSendRequestHeaders, que puede necesitar para eliminar todas las arrugas.

En lo que respecta a la compresión IIS verus HttpModule, IIS es definitivamente más fácil, ya que no tiene que preocuparse por otra Asamblea. He usado ambos métodos con aplicaciones de negocios y ambos se desempeñan casi por igual en pruebas de carga. Si IIS está disponible, diría que lo use.

Entre 60 y 80% de compresión para archivos HTML, JS, CSS y XML es común con gzip. Tenga en cuenta que gran parte de su carga útil puede ser imágenes y objetos multimedia que son mucho más difíciles de comprimir.

Otros consejos

http://blowery.org/httpcompress/

Hemos utilizado esta utilidad de compresión en mi trabajo por un tiempo. Bastante bien.

Creo que la opción Global.asax será una buena opción si está en un entorno de alojamiento compartido, por ejemplo, donde no tiene acceso a la configuración de IIS.

IIS 6 proporciona soporte de compresión básico, pero si ya está en IIS 7, le proporciona un gran Compresión HTTP , puede definir qué archivos se comprimen en función de su tipo MIME en sus archivos de configuración ...

Logra esencialmente lo mismo que la compresión IIS: ambos terminan enviando la respuesta con compresión gzip. Recientemente he implementado este método y reduce constantemente el tamaño de la respuesta en un 60%, sin que el impacto en el rendimiento valga la pena preocuparse.

Hay algunos problemas posibles. En primer lugar, debe tener cuidado con el almacenamiento en caché de resultados. Debe usar un VaryBy personalizado para asegurarse de que las diferentes versiones se almacenen en caché para las solicitudes con diferentes encabezados de codificación de aceptación. De lo contrario, si la versión comprimida se almacena en caché, todos los usuarios la recibirán, ya sea que su navegador pueda aceptarla o no.

En segundo lugar, GZipStream a veces trunca los últimos caracteres de la respuesta si usas Response.End o Response.Flush, porque la secuencia no se cierra hasta que es demasiado tarde. No tengo conocimiento de ninguna buena solución para esto.

Finalmente, esto solo comprimirá tu HTML. Cualquier archivo CSS o Javascript será servido normalmente. Necesitaría, por ejemplo, servir esos archivos a través de un IHttpHandler personalizado para comprimirlos.

Hay problemas con JavaScript y VBScript. El problema de JavaScript se ha confirmado en un comentario de xxldaniel en un codificando el artículo de horror , y tuve problemas con VBScript (para la automatización de M $ Office) utilizando un " Scripting.Dictionary " con " Microsoft.XMLHTTP " solicitud.

Puede probar mod_gzip . Utiliza la versión ZLib administrada y permite una configuración altamente ajustable. La sintaxis es compatible con el mismo módulo llamado Apache e incluso extendido. Así, por ejemplo, podría establecer diferentes niveles de compresión para diferentes tipos de mime y así sucesivamente.

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