在服务器上压缩JSON消息并在客户端解压缩

时间:2015-02-16 12:05:38

标签: javascript json compression gzip lzma

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

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

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

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

2 个答案:

答案 0 :(得分: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));
});

答案 1 :(得分:0)

关于可能性将使用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数据的更紧凑的表示。