我在IIS7中启用了压缩,除了ASP.NET AJAX构建的响应之外,它在所有响应上都按预期工作。我有一个向客户端提供数据的Web服务。直接调用Web服务时,会对其进行适当压缩。但是,当通过ASP.NET AJAX调用它时,JSON响应不会被压缩。
如何让ASP.NET AJAX通过GZip压缩发送其JSON响应?
答案 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响应,你的应用程序变得更慢了!!