如何让ASP.NET AJAX通过GZip压缩发送其JSON响应?

时间:2008-10-28 18:03:25

标签: asp.net ajax json gzip

我在IIS7中启用了压缩,除了ASP.NET AJAX构建的响应之外,它在所有响应上都按预期工作。我有一个向客户端提供数据的Web服务。直接调用Web服务时,会对其进行适当压缩。但是,当通过ASP.NET AJAX调用它时,JSON响应不会被压缩。

如何让ASP.NET AJAX通过GZip压缩发送其JSON响应?

4 个答案:

答案 0 :(得分:5)

IIS7使用内容编码来决定是否压缩响应(当然假设浏览器可以接受gzip)。它们在applicationHost.config中设置,默认情况下列表为

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

如果直接调用Web服务,则XML响应的内容类型为text/xml,会被压缩。当由AJAX调用时,JSON响应的内容类型为application/json,因此它不会被压缩。将以下内容添加到applicationHost.config应修复...

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

答案 1 :(得分:1)

您使用的浏览器是什么? IE 6中存在一个导致压缩错误的错误。所以ASP.NET AJAX关闭了对IE 6浏览器的压缩:

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

另外,您是否为ASMX文件启用了压缩?

答案 2 :(得分:0)

最后我检查过,gzipping是IIS做的事情(正确设置时) - 当然还有浏览器发送所需的标题

答案 3 :(得分:0)

一般情况下,你不想这样做,除非你不介意将服务器电量大小的订单投入你的应用程序......

执行此操作时,不仅服务器CPU而且客户端CPU也会出现问题....

最后,如果你GZip所有的Ajax响应,你的应用程序变得更慢了!!