【问题标题】:Compress JSON message on server and decompress in client side在服务器上压缩 JSON 消息并在客户端解压缩
【发布时间】:2015-02-16 12:05:38
【问题描述】:

我将 Json 消息发送到服务,该服务将这些消息重新发布给我们的用户。问题是我的一些消息大于允许的消息大小的最大限制,所以我想知道是否可以对我的消息应用任何类型的压缩,然后在客户端解压缩它们。

首先我在 C# 中尝试了 Gzip,但使用 JavaScript 解压缩似乎很难。

其他一些声音告诉尝试 LZMA 和 Zlip。

我是不是走在正确的道路上,或者我应该以不同的方式思考。

【问题讨论】:

  • 我认为压缩已经由服务器/浏览器在 HTTP 协议上管理:en.wikipedia.org/wiki/HTTP_compression 我们不应该用 C# 或 Javascript 来管理它,也许是 IIS 参数?
  • 你可以考虑 BSON:bsonspec.org。那里有一些 javascript 库,例如github.com/mongodb/js-bson。或者,如果您的消息都遵循某种标准化格式,那么某种特定领域的语言/压缩可能会更容易。
  • 我想通过应用压缩来最小化我的邮件大小,是否有助于减小邮件大小?
  • 这也取决于这个限制来自哪里。如果它是 JSON 序列化程序中内置的限制,则可以覆盖它。

标签: javascript json compression gzip lzma


【解决方案1】:

我找到了一个解决方案,它成功地使用“C# 和 PHP”解压压缩文本。 Zlib 用于压缩。

我从 JSXCompressor 得到解决方案,你可以下载这个例子: http://jsxgraph.uni-bayreuth.de/distrib/jsxcompressor.zip 见 testhelloworld.php

在 PHP 中,使用 gzcompress 完成压缩,然后使用 base64_encode 对压缩输出进行编码。

$x = 'Some text or json';
$compressed = base64_encode(gzcompress($x, 9)); // 9 could be from 1 to 9
// echo $compressed;
file_put_contents('compressed.txt', $compressed);

用于解压:

$.ajax('compressed.txt').done(function (res) {

    console.info(JXG.decompress(res));
});

【讨论】:

    【解决方案2】:

    可能会使用 BSON,它是 JSON 数据的二进制编码。

    http://bsonspec.org/

    在客户端有一些用于编码/解码的库。 Mongo DB自带一个:https://github.com/mongodb/js-bson

    在服务器端 JSON.net 支持 BSON 序列化/反序列化:http://james.newtonking.com/archive/2009/12/26/json-net-3-5-release-6-binary-json-bson-support

    这并不完全是压缩。只是 JSON 数据的更紧凑的表示。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-19
      • 2023-03-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多