Chrome80+ 支持原生的 gzip 压缩 /解压缩,支持流模式。一个简单的用法:
function gzipImpl(cls, algo, data) {
const {writable, readable} = new cls(algo)
const writer = writable.getWriter()
writer
.write(data)
.then(_ => writer.close())
return new Response(readable).arrayBuffer()
}
const gzip = gzipImpl.bind(0, CompressionStream, 'gzip')
const gunzip = gzipImpl.bind(0, DecompressionStream, 'gzip')
// test
const srcData = new Uint8Array(10000)
const zipData = await gzip(srcData)
const unzipData = await gunzip(zipData)
// src: 10000 zip: 45
console.log('src:', srcData.length, 'zip:', zipData.byteLength)
console.assert(srcData.length === unzipData.byteLength)
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.