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

Ran*_*der 2 asp.net-mvc json azure asp.net-mvc-4

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

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

ast*_*kov 11

要启用JsonResultMVC Controller操作的压缩,您需要从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>  
Run Code Online (Sandbox Code Playgroud)

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

GET https://double.azurewebsites.net/Home/SomeJson HTTP/1.1
User-Agent: Fiddler
Accept-Encoding: gzip, compress
Host: double.azurewebsites.net
Run Code Online (Sandbox Code Playgroud)

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