为JSON上的数据传输选择适当的压缩方案

时间:2011-11-13 05:43:08

标签: javascript json lzma

David 的一些评论之后,我决定修改我的问题。原始问题可以在下面找到,也可以在新修订的问题中找到。我将离开原始问题只是为了了解为什么这个问题已经开始。

原始问题(为jslzma设置LZMA属性)

我有一些需要用ajax传输的大型json文件。我目前正在使用jQuery和$ .getJSON()。我想在收到文件后使用jslzma library解压缩文件。目前,我正在使用django和pylzma库来压缩文件。

唯一的问题是jslzma库缺少文档。有一些,但还不够。所以我有两个关于如何使用该库的问题。

它以此为例:

LZMA.decompress(properties, inStream, outStream, outSize);

我知道如何设置inStream和outStream变量,而不是propertiesoutSize。那么,任何人都可以举例说明如何设置properties变量(即预期的内容)以及如何计算outSize ......

感谢。

编辑#1(修订问题)

<小时/> 我正在寻找一种压缩方案,它可以使用python(django)和javascript来提供高度可重复的数据。

传输的数据包含高程测量。每个文件都有1200x1200个数据点,相当于大约2.75MB的未压缩原始二进制形式。 JSON将它扩展到5-6MB之间。我也研究过base64(只是为了覆盖所有的基础),这会减小尺寸,但我没有在js中读取它有任何成功。我认为数据仅仅因为高度可重复的数据值而易于压缩。例如,一个文件只有83个唯一高程值来描述1440000个数据点。

我运气不好,主要是因为我刚开始学习JavaScript。

那么有人可以建议这种数据的压缩方案吗?目标是通过减小数据大小来最小化传输时间。

感谢。

2 个答案:

答案 0 :(得分:2)

使用Javacscript在客户端进行解压缩可能需要相当长的时间,并且在很大程度上取决于客户端盒子的可用带宽。为什么不只是实现更小但更快,更容易编写解压缩,如rle,delta或golomb代码?或者你想看看压缩的Jsons?

答案 1 :(得分:2)

对于它的价值而言,LZMA压缩和解压缩的速度通常很慢;因此,更常见的是使用更快的压缩方案。标准GZIP(放气)具有相当好的平衡:其压缩比是可接受的,其压缩速度比LZMA或bzip2好很多。 此外:大多数Web服务器和客户端都支持自动处理gzip压缩,这使得使用起来更加方便。