2008-10-28 9 views
12

Tengo habilitada la compresión dentro de IIS7 y funciona según lo esperado en todas las respuestas, excepto en aquellas construidas por ASP.NET AJAX. Tengo un servicio web que proporciona datos al cliente. Cuando se llama directamente al servicio web, está comprimido correctamente. Sin embargo, cuando se llama a través de ASP.NET AJAX, la respuesta JSON no se comprime.¿Cómo puedo obtener ASP.NET AJAX para enviar su respuesta JSON con compresión GZip?

¿Cómo puedo obtener ASP.NET AJAX para enviar su respuesta JSON con compresión GZip?

Respuesta

1

¿Qué navegador está utilizando? Hay un error en IE 6 que causa errores en la compresión. Así ASP.NET AJAX se apaga la compresión para IE 6 navegadores:

http://weblogs.asp.net/scottgu/archive/2005/06/28/416185.aspx

Además, ¿permiten la compresión de archivos ASMX?

+0

¿Cómo podemos habilitar la compresión para archivos ASMX? ¿Alguna referencia? – Lijo

0

Que yo sepa, la gzipping era algo que hace IIS (cuando configurado correctamente) - y por supuesto cuando el navegador envía las cabeceras necesarias

5

IIS7 utiliza el contenido-codificación para decidir si desea comprimir la respuesta (suponiendo por supuesto que el navegador puede aceptar gzip). Están situados en applicationHost.config, y por defecto, la lista es

<dynamicTypes> 
    <add mimeType="text/*" enabled="true" /> 
    <add mimeType="message/*" enabled="true" /> 
    <add mimeType="application/x-javascript" enabled="true" /> 
    <add mimeType="*/*" enabled="false" /> 
</dynamicTypes> 

Si llama al servicio web directamente, la respuesta XML tiene un tipo de contenido de text/xml, que se comprime. Cuando AJAX lo llama, la respuesta JSON tiene un tipo de contenido application/json, por lo que no está comprimido. Añadiendo lo siguiente a applicationHost.config debe arreglar eso ...

 <add mimeType="application/json" enabled="true" /> 
+0

¿Cómo podemos hacerlo en IIS6? – Lijo

+0

Referencia: http://stackoverflow.com/questions/2515421/how-to-compress-json-with- – Lijo

+0

Y [Personalización de los tipos de archivos IIS Compresses (IIS 6.0)] (http://www.microsoft.com/ technet/prodtechnol/WindowsServer2003/Library/IIS/5bce429d-c4a7-4f9e-a619-5972497b932a.mspx? mfr = true) – Lijo

0

En general, usted no quiere hacer esto a menos que no le importaría tirar órdenes de magnitud la cantidad de energía de los servidores en sus aplicaciones .. .

también no sólo servidor de CPU, sino también en el cliente de la CPU se convierte en un problema cuando se hace esto ....

esto concluye con que su aplicación se vuelve más lenta MANERA si gzip todas sus respuestas Ajax ... !

+0

El énfasis del lado del cliente es muy importante tener en cuenta. Además, tenga en cuenta cuándo comprimir y cuándo no. De hecho, hay momentos en que la compresión realmente hace que el objeto sea más grande antes de la descompresión. Usando MVC, se puede hacer en cualquier aplicación ASP.NET, creé una anotación para mis acciones de controlador creando una clase que hereda de ActionFilterAttribute. Dentro de la clase, selecciono el encabezado de codificación de aceptación, filterContext.HttpContext.Request.Headers ["Accept-Encoding"] y verifico si deflate o gzip. Si están presentes y cumplen con las condiciones específicas de mi empresa, desinflo o GZipStream. –

Cuestiones relacionadas