在javascript中压缩的问题

Pet*_*r P 9 javascript compression gzip lzma

我有一个我试图压缩的对象.它的形式

[
  {
    array
    string
  },
  {
    array
    string
  },
  ...
]
Run Code Online (Sandbox Code Playgroud)

这些数组的长度不超过10-15,与字符串相比非常小(它们是html,长度大约为170k).虽然字符串通常是重复的,或者有大量的重叠.所以我的直觉告诉我压缩值应该是1个字符串的压缩值,加上一点额外的.

我JSON.stringify这个对象,并尝试压缩.

大多数压缩库在压缩字符串方面表现不佳,因为服务器向我发送了一个77kb的gzip压缩版本,我知道它至少可以这么小.

用gzip JS

LZMA-JS

在我尝试过的15个库中做得很好.

问题是gzip-js在字符串数量上是线性的.但是lzma正确地做到了这一点,它只是略微增加了尺寸.

不幸的是,当压缩7mb(约30~字符串)时,Lzma-js(2级)非常慢(20s vs 1s gzip).

有没有一个compressopn库,它大致和gzip一样快,但不能在重复字符串上线性缩放?

Ali*_*.MD 1

使用高压缩级别的 gzip-js 库
https://github.com/beatgammit/gzip-js

var gzip = require('gzip-js'),
    options = {
        level: 9,
        name: 'hello-world.txt',
        timestamp: parseInt(Date.now() / 1000, 10)
    };

// out will be a JavaScript Array of bytes
var out = gzip.zip('Hello world', options);
Run Code Online (Sandbox Code Playgroud)

我发现这种方式在正常持续时间内尽可能小

对于基于 LZ 的压缩算法,我认为 lz-string 更快,
请在您的数据样本上检查这一点
https://github.com/pieroxy/lz-string