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