原文链接: lz-string 面向localstorage的字符串压缩库
https://www.npmjs.com/package/lz-string

这个库主要作用是将字符串压缩, 主要是为了能在localstorage中储存, 因为ls中只能存字符串, 而且有一些编码问题, 该库主要面向的是ls的字符串压缩和储存方案
pako 主要是字节数组, 而且压缩后的不知道能不能存到ls中, 主要是在一些奇怪的文字编码上, cocos用的lz, 所以还是尽量跟着他们用吧
对比如下
确实在压缩比上面lz占优势, 在小字符串上表现很好, 但是大字符串上pako时间上好很多
1const pako = require("pako") 2const fs = require("fs") 3const LZ = require("lz-string") 4function testPako(path) { 5 let s = fs.readFileSync(path, "utf8") 6 console.log("size:", s.length) 7 let st = +new Date() 8 let compressed = pako.deflate(s, { to: "string" }) 9 let ed = +new Date() 10 console.log("pako", compressed.length, compressed.length / s.length, ed - st) 11 st = +new Date() 12 let raw = pako.inflate(compressed, { to: "string" }) 13 ed = +new Date() 14 console.log("pako", raw.length, ed - st) 15} 16function testLZ(path) { 17 let s = fs.readFileSync(path, "utf8") 18 console.log("size:", s.length) 19 let st = +new Date() 20 let compressed = LZ.compress(s) 21 let ed = +new Date() 22 console.log("lz", compressed.length, compressed.length / s.length, ed - st) 23 st = +new Date() 24 let raw = LZ.decompress(compressed) 25 ed = +new Date() 26 console.log("lz", raw.length, ed - st) 27} 28 29let big = `D:/code/vue3/vue3-web-tools/public/worker.min.js` 30let small = `D:/code/vue3/vue3-web-tools/public/tesseract-core.wasm.js` 31testPako(big) 32testPako(small) 33testLZ(big) 34testLZ(small) 35 36/** 37size: 100785 38pako 31993 0.31743811082998463 232 39pako 100785 46 40size: 3880904 41pako 1388523 0.35778339273530085 887 42pako 3880904 272 43size: 100785 44lz 24197 0.24008533015825767 96 45lz 100785 55 46size: 3880904 47lz 906636 0.23361464236167656 3319 48lz 3880904 695 49*/