js实现gzip
使用 pako 库实现 Gzip 压缩与解压
pako 是一个流行的 JavaScript 库,支持 Gzip、Deflate 和 Zlib 格式的压缩与解压。
安装:
npm install pako
压缩示例:
import pako from 'pako';
const data = 'This is the data to compress';
const compressed = pako.gzip(data);
console.log(compressed); // Uint8Array
解压示例:
const decompressed = pako.ungzip(compressed);
const originalText = new TextDecoder().decode(decompressed);
console.log(originalText); // 还原原始数据
浏览器原生 API 实现 Gzip 压缩
现代浏览器支持 Compression Streams API,无需第三方库:
压缩:
const stream = new Blob(['data to compress']).stream();
const compressedStream = stream.pipeThrough(new CompressionStream('gzip'));
解压:
const decompressedStream = compressedStream.pipeThrough(new DecompressionStream('gzip'));
Node.js 原生 Zlib 模块
Node.js 内置 zlib 模块支持 Gzip:
压缩:
const zlib = require('zlib');
const input = 'data to compress';
zlib.gzip(input, (err, buffer) => {
if (!err) console.log(buffer.toString('base64'));
});
解压:
zlib.gunzip(buffer, (err, output) => {
if (!err) console.log(output.toString());
});
注意事项
压缩二进制数据时需确保正确处理编码。字符串压缩前建议转换为 UTF-8 格式,解压后需相应解码。
浏览器 API 兼容性需检查,Compression Streams API 在 Chrome 80+ 和 Edge 80+ 支持较完善。生产环境建议使用 pako 作为跨平台解决方案。







