我在IIS7中启用了压缩,除了ASP.NET AJAX构建的响应之外,它在所有响应上都按预期工作。我有一个向客户端提供数据的Web服务。直接调用Web服务时,会对其进行适当压缩。但是,当通过ASP.NET AJAX调用它时,JSON响应不会被压缩。
如何让ASP.NET AJAX通过GZip压缩发送其JSON响应?
答案 0 :(得分:3)
这应该是开箱即用的。要验证我的ASP.NET AJAX JSON响应是否使用GZip压缩:
下载Fiddler(版本2.1.9是
在IE 7中启用Fiddler:工具 - > Fiddler2
由于所有流量都通过代理进行路由,因此您需要设置Fiddler以在HTTP标头中应用accept-encoding:Gzip。规则 - >应用GZip编码
通过提琴手访问您的网站。如果您的站点在localhost上,IE7将不会通过fiddler路由它。 Fiddler 2.1.8有一个简洁的功能,它将localhost(127,0.0.1)映射到http://ipv4.fiddler和http://ipv6.fiddler
在Fiddler会话中查找asmx请求。
要验证请求是否使用gzip编码,请查看顶部面板中的Request-Headers。您应该看到“客户端:接受编码:gzip,deflate”
要验证响应是否使用gzip编码发送,请查看底部面板中的Response-Headers。你应该看到“Transport:Content-Encoding:gzip”
我在Vista Business SP1上安装了IIS 7而没有其他配置,我的项目使用ASP.NET AJAX和标准的Web服务。
希望有所帮助!
答案 1 :(得分:1)
您需要检查.asmx文件扩展名是否在要压缩的文件类型列表中,这是ajax json的来源。
答案 2 :(得分:1)
还要确保JSON请求包含例如accept-encoding:HTTP头中的gzip。