如何启用HTTP压缩来压缩JSON文档

时间:2014-09-05 11:10:50

标签: asp.net-mvc json asp.net-mvc-4 azure

我在Microsoft Azure上托管了一个MVC 5应用程序(C#)。该应用程序将一些相当大的JSON文档从服务器返回给客户端。有谁知道如何打开HTTP压缩,以便这些文件被压缩到客户端?我用谷歌搜索了这个,但我找不到至少3-4岁的东西。

我认为另一种方法是使用压缩实用程序仅压缩JSON文档。我尝试过LZ-String,但似乎无法使用C#版本在服务器上压缩文档,并使用JavaScript版本在客户端上解压缩,并且可以识别生成的JSON文档。

1 个答案:

答案 0 :(得分:11)

要启用压缩JsonResult MVC控制器的操作,您需要从web.config文件启用动态压缩:

  <system.webServer>
    <urlCompression doDynamicCompression="true" />
    <httpCompression>
      <dynamicTypes>
        <add mimeType="application/json" enabled="true" />
        <add mimeType="application/json; charset=utf-8" enabled="true" />       
      </dynamicTypes>
    <staticTypes>
        <add mimeType="application/json" enabled="true" />
        <add mimeType="application/json; charset=utf-8" enabled="true" />       
    </staticTypes>
    </httpCompression>
  </system.webServer>  

具有上述配置的工作示例发布在Azure网站的免费层上,可以使用简单的HTTP GET请求进行测试:

GET https://double.azurewebsites.net/Home/SomeJson HTTP/1.1
User-Agent: Fiddler
Accept-Encoding: gzip, compress
Host: double.azurewebsites.net

注意,Accept-Encoding标头是绝对必须触发服务器端压缩的。另请注意mime类型application/json; charset=utf-8,它是ASP.NET MVC5 JsonResult提供的mime类型。