【问题标题】:How to enable HTTP compression to compress JSON documents如何启用 HTTP 压缩以压缩 JSON 文档
【发布时间】:2014-10-30 07:55:40
【问题描述】:

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

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

【问题讨论】:

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


【解决方案1】:

要启用对 MVC 控制器操作的 JsonResult 的压缩,您需要从 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 类型。

【讨论】:

  • 这看起来不错。这如何与 Web API 中的内容协商一起工作? Accept 标头通常决定返回的内容。另外,浏览器会自动解压JSON吗?所有浏览器?
  • 好问题。我需要让所有主流浏览器自动对这个做解压,否则我不能使用它。
  • Randy Minder,我们在 21 世纪。所有(主要)浏览器都不支持压缩。使浏览器能够发送此标头是配置问题。而且您真的不想总是发送压缩内容 - 只是为了客户端无法解压缩它的情况。这些被称为网络标准。在发布讽刺性的 cmets 之前,稍微检查一下网络并对接受编码标头进行小研究!当然,无论请求标头如何,都可以始终压缩响应-仅当您想要不符合标准时。只需搜索互联网...
  • 更重要的是,如果您只是用任何现代浏览器打开 URL double.azurewebsites.net/Home/SomeJson 并使用浏览器工具进行网络监控,您会看到所有这些默认情况下都会发送这些 Accept Encoding。响应当然是压缩的。并且解压是由浏览器透明完成的,所以你不需要在 JavaScript 中做任何事情。
  • @JasonCoder 与 WebAPI 的协商完全一样!您只需在dynamicTypes 中包含需要压缩的内容的mime 类型。 Rest 是 RFC for HTTP 协议的实现,由浏览器和服务器实现 ...
猜你喜欢
  • 1970-01-01
  • 2022-12-21
  • 2015-01-15
  • 2023-03-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-06
相关资源
最近更新 更多