2014年10月16日

LZアルゴリズムでBase62に圧縮するJavaScriptライブラリ書きました

LZSS(LZ77) 圧縮アルゴリズムで文字列を圧縮/解凍します。
圧縮された結果は Base62 (0-9A-Za-z) からなるバイナリセーフな文字列になります。
サイズ制限のある localStorage や sessionStorage, cookie など、 例えば localStorage は 5MB 使えたとしても UTF-16 の場合、実質的に 2.5MB 分になってしまします。
圧縮結果は内容にもよりますが おおよそ 60~80% 程度のサイズになります。
例外として、繰り返しのない文字列は1~2割程度サイズが増えることがあります。

追記

2014-10-24 現在、高速化にすべく見なおして圧縮率も上がりました。
繰り返しのない文字列 (例えば U+0000 - U+FFFF 1文字ずつなど) も大幅なサイズ増加なく圧縮できます

var data = 'hello hello hello';
console.log(data.length); // 17

var compressed = lzbase62.compress(data);
console.log(compressed); // 'tYVccfrgxGL'
console.log(compressed.length); // 11
console.log(compressed.length < data.length); // true

var decompressed = lzbase62.decompress(compressed);
console.log(decompressed); // 'hello hello hello'
console.log(decompressed === data); // true

Download

※バージョンが違うとフォーマットも違う可能性があります。できるだけ最新バージョンをご利用ください

Demo

Repository