【问题标题】:JSON webservice response compression in IIS 7IIS 7 中的 JSON Web 服务响应压缩
【发布时间】:2011-01-29 17:54:03
【问题描述】:

JSON 响应压缩有问题。将网站上传到生产服务器(Windows 2008、IIS 7)后,我查看响应标头并找到未压缩的响应。在 IIS 控制面板中打开“启用静态压缩”和“启用动态压缩”不起作用。ASPX 页面被 gzip 响应,但 web 服务响应未压缩。

我查看了谷歌,但没有找到关于这个问题的答案。另外,我尝试了这种json ihttpmodule compression 方式(并将这个模块添加到web.config)——但是这个源代码非常适合在带有ASP.NET 开发服务器的开发机器上工作(并且响应大小减少了七倍)并且在IIS7 中完全被忽略了。

如何将 gzip 压缩应用于来自我的网络服务的 json 响应?谢谢。

PS .NET 3.5

【问题讨论】:

    标签: asp.net web-services json iis-7 compression


    【解决方案1】:

    IIS 动态压缩使用响应内容类型标头来确定是否应该压缩内容。默认设置不压缩“application/json”。您可以在http://www.iis.net/configreference/system.webserver/httpcompression找到更多信息

    要添加它,请打开管理员命令提示符,运行以下命令,然后重新启动 IIS 服务。

    cd \Windows\System32\inetsrv
    appcmd.exe set config -section:system.webServer/httpCompression /+"dynamicTypes.[mimeType='application/json',enabled='True']" /commit:apphost
    

    您可能想要添加一些其他内容类型。默认动态设置压缩的唯一 application/* 类型是 application/x-javascript。

    【讨论】:

      【解决方案2】:

      我偶然发现了与 JsonCompressionModule 相同的问题。它在开发服务器上工作,但不在 IIS 7 上。我发现在 IIS 7 下,仅在 system.web 和 system.webServer 下添加句柄是不够的(见下文)。在此更改之后,它在 IIS 7 上运行良好。

      <system.web>
       <httpModules>
         <add name="JsonCompressionModule" type="JsonCompressionModule"/>
       </httpModules>
      </system.web>
      
      <system.webServer>
       <modules>
        <add name="JsonCompressionModule" preCondition="managedHandler" type="JsonCompressionModule"/>
       </modules>
      </system.webServer>
      

      【讨论】:

      • 谢谢,我明天试试这个解决方案。
      • 伙计,IIS 7 的这一额外步骤为我节省了大量时间。谢谢!
      【解决方案3】:

      请尝试检查客户端发送的请求标头是什么。 Accept-Encoding 应该具有 gzip 或 deflate 值。 确保客户端能够解压缩 JSON。 有一个解决方案可以同时设置 Accept-Encoding 并执行 GZIP 压缩——Helicon Ape (http://www.helicontech.com/ape/)。以下配置将兼具这两个技巧:

      # Manually set required request header
      RequestHeader append Accept-Encoding gzip early
      
      # Enable high-level (9) comression for JSON files
      SetEnvIf mime application/json gzip=9
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-06-02
        • 2017-01-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-08-27
        • 2018-09-17
        • 1970-01-01
        相关资源
        最近更新 更多