---
title: Compression Streams API:gzip 与 deflate 压缩与解压
keywords:
- CompressionStream
- DecompressionStream
- gzip
- deflate
- 流处理
description: 使用 CompressionStream/DecompressionStream 在浏览器端进行 gzip/deflate 压缩与解压,适配大文件与流式网络传输,含转换与背压建议。
categories:
- 应用软件
- 压缩刻录
---
概述
Compression Streams 提供对 gzip 与 deflate 的原生压缩/解压能力,可在读取与网络传输过程中进行流式处理,降低带宽与加速传输。
用法/示例
// 压缩 Blob
async function compress(blob) {
const stream = blob.stream().pipeThrough(new CompressionStream('gzip'))
const compressed = await new Response(stream).blob()
return compressed
}
// 解压 ArrayBuffer
async function decompress(buffer) {
const stream = new ReadableStream({
start(controller) { controller.enqueue(new Uint8Array(buffer)); controller.close() }
}).pipeThrough(new DecompressionStream('gzip'))
return await new Response(stream).arrayBuffer()
}
工程建议
- 根据数据类型选择合适算法与块大小,避免主线程长时间处理导致卡顿。
- 与 Web Streams 背压治理协同,必要时分片与节流以保证交互响应。
- 校验服务端解码能力与内容协商头,确保跨端一致性。
参考与验证
- MDN:Compression Streams — https://developer.mozilla.org/docs/Web/API/Compression_Streams_API
- web.dev:Compression Streams — https://web.dev/articles/compression-streams

发表评论 取消回复