我正在编写一个Web应用程序,需要通过AJAX将JSON数据存储在一个小的、固定大小的服务器端缓存中(想想Opensocial配额)。我对服务器没有控制权。

我需要减少存储数据的大小,以保持在服务器端配额,并希望能够在发送到服务器之前在浏览器中gzip字符串化的JSON。

但是,我找不到太多Gzip的JavaScript实现。关于如何在发送数据之前在客户端压缩数据,有什么建议吗?


当前回答

我们刚刚发布了pako https://github.com/nodeca/pako,将zlib移植到javascript。我认为这是现在最快的deflate / inflation / gzip / ungzip的js实现。此外,它拥有民主的MIT许可证。Pako支持所有zlib选项,其结果是二进制相等的。

例子:

var inflate = require('pako/lib/inflate').inflate; 
var text = inflate(zipped, {to: 'string'});

其他回答

我们刚刚发布了pako https://github.com/nodeca/pako,将zlib移植到javascript。我认为这是现在最快的deflate / inflation / gzip / ungzip的js实现。此外,它拥有民主的MIT许可证。Pako支持所有zlib选项,其结果是二进制相等的。

例子:

var inflate = require('pako/lib/inflate').inflate; 
var text = inflate(zipped, {to: 'string'});

我没有测试,但是有一个ZIP的javascript实现,叫做JSZip:

https://stuk.github.io/jszip/

我想,就处理时间而言,与未压缩有效负载的多个HTTP数据包的传输时间相比,通用的客户端JavaScript压缩实现将是一项非常昂贵的操作。

你是否做过任何测试来让你知道可以节省多少时间?我的意思是,节省带宽不可能是你追求的,不是吗?

下面是一些用Javascript实现的其他压缩算法:

·霍夫曼 LZ77

我将LZMA的实现从GWT模块移植到独立的JavaScript中。它叫做LZMA-JS。