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

Compress JSON message on server and decompress in client side

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

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

其他一些声音建议尝试 LZMA 和 Zlip。

我的做法是否正确,或者我应该换一种方式思考。

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

http://bsonspec.org/

在客户端,encoding/decoding 有一些库。一个带有 Mongo 数据库:https://github.com/mongodb/js-bson

服务器端JSON.net支持BSONserialization/deserializtion:http://james.newtonking.com/archive/2009/12/26/json-net-3-5-release-6-binary-json-bson-support

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

我找到了一个解决方案,它成功地使用两者 'C# and 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));
});