我在 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 header 中应用 accept-encoding:Gzip。规则 -> 应用 GZip 编码
  • 通过 fiddler 访问您的网站。如果您的站点位于 localhost 上,则 IE7 不会通过 fiddler 进行路由。 Fiddler 2.1.8 有一个巧妙的功能,可以将 localhost (127,0.0.1) 映射到 http://ipv4.fiddlerhttp://ipv6.fiddler
  • 在 Fiddler session 中找到 asmx 请求。

  • 要验证请求是使用 gzip 编码发出的,请查看顶部面板中的 Request-Headers。你应该看到 “客户端:接受编码:gzip,放气”

    要验证响应是否使用 gzip 编码发送,请查看底部面板中的 Response-Headers。你应该看到 “传输:内容编码:gzip”

    我在 Vista Business SP1 上安装了 IIS 7,没有额外的配置,我的项目使用 ASP.NET AJAX 和标准的 web 服务。

    希望有帮助!


    评论关闭
    IT干货网

    微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!