【问题标题】:More bandwidth-efficient data formats than XML & JSON? [closed]比 XML 和 JSON 更节省带宽的数据格式? [关闭]
【发布时间】:2014-03-16 04:14:42
【问题描述】:

当以 JSON 或 XML 格式将大量列式数据从 Web 服务器传输到浏览器时,每一行都会不必要地重复列名。我必须传输的基本上是 CSV 格式 - 即。多行数据,每行具有相同的字段顺序。

例如,我将在 XML 中传输:

<row>
  <name>Frank</name>
  <city>New York</city>
</row>
<row>
  <name>Brian</name>
  <city>Jerusalem</city>
</row>
etc..

与 JSON 相同,字段名称会不必要地重复,这会无缘无故地变成很多额外的字节。

我的问题是,是否有其他标准格式受 Javascript 和/或 .NET 中的库支持,我可以使用它们来更有效地传输这种“类似 CSV”的数据集?

【问题讨论】:

  • 那么,为什么不使用 CSV?您还可以将服务器设置为 gzip 数据,这可能会节省最多的带宽。
  • 为什么这个问题太宽泛了?尝试节省服务器和客户端之间的带宽时,可用的选项数量非常有限;所以一组有限的答案。
  • 如果有人可以投票关闭问题,为什么其他人不能投票重新打开它?

标签: javascript .net ajax xml json


【解决方案1】:

除非您谈论的是大量数据,否则它可能并不重要(带宽很便宜,至少我听说过)。但是,如果您想将尽可能多的数据压缩到可用带宽中,则可以选择。

您可以使用任何您想要的格式(XML、JSON),然后对其进行压缩。例如,您可以使用JSZip。优点:您不必转换基本数据结构。

此外,如果 CSV 是对您的应用程序最有意义的格式,那么没有什么可以阻止您使用 CSV。最好使用诸如jquery-csv 之类的库来处理诸如正确引用字符串之类的烦恼。缺点:这不是真正的压缩;只是一种没有太多开销的格式。

综上所述,我可能会采用第一种方法。

【讨论】:

    【解决方案2】:

    我猜你的 json 格式如下:

    [
      {
        "name": "Frank",
        "city": "New York"
      },
      {
        "name": "Brian",
        "city": "Jerusalem"
      }
    ]
    

    为什么不简单地把它改成:

    [
      ["name", "city"],
      ["Frank", "New York"],
      ["Brian", "Jerusalem"]
    ]
    

    【讨论】:

      【解决方案3】:

      在通过 XML 从 Flash(在客户端运行,类似于 JavaScript)和 .NET(显然在服务器上运行)传输大量数据时,我遇到了类似的问题

      我最终使用的方法是;

      XML > string without whitespace > zip compress > base64 encoded
      

      然后在另一边,做相反的事情。

      在你的情况下,你可以这样做;

      CSV > string > zip > base64
      

      根据记忆,我能够将一些非常大的有效载荷(大约 2mb)降至 50kb 以下

      【讨论】:

      • 只是补充一下,我选择 zlib 压缩是因为我能够在客户端 (Flash) 和服务器 (.NET) 端使用它。我相信 zlib 在 JavaScript 中是可用的,作为一个 lib。
      • 非常感谢,不知道基于 JS 的解压缩。但是为什么 base64 编码 - 这不只是增加了传输量吗?
      • 是的,增加了更多的体积,但它确保您的数据是纯文本,否则它将是二进制的。永远无法让二进制文件正常工作,而且我在压缩后保存了这么多数据,base64 编码增加的相对较少,尤其是通过 Fiddler 进行调试的额外好处。但是,如果你可以用二进制做,那就用二进制做——更好。
      • 另外,我感觉 IIS 和二进制数据存在安全问题;至少在我正在使用的服务器上,当它看到二进制数据时它吓坏了。这对您来说也可能不是问题。
      猜你喜欢
      • 2011-06-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-04
      • 1970-01-01
      • 2021-01-23
      • 1970-01-01
      相关资源
      最近更新 更多