On this page

可迭代压缩

History
Source Code: lib/zlib/iter.js

稳定性:1 - 实验性

node:zlib/iter 模块提供压缩和解压缩转换,用于 node:stream/iter 可迭代流 API。

仅当启用 --experimental-stream-iter CLI 标志时,此模块才可用。

每种算法都有一个异步变体(有状态异步生成器,用于 pull()pipeTo())和一个同步变体(有状态同步生成器,用于 pullSync()pipeToSync())。

异步转换在 libuv 线程池上运行压缩,使 I/O 与 JavaScript 执行重叠。同步转换直接在主线程上运行压缩。

注意:这些转换的默认值针对流吞吐量进行了优化,与 node:zlib 中的默认值不同。特别是,gzip/deflate 默认级别为 4(不是 6),memLevel 为 9(不是 8),Brotli 默认质量为 6(不是 11)。这些选择匹配常见的 HTTP 服务器配置,并提供显著更快的压缩速度,而压缩率仅略有降低。所有默认值都可以通过选项覆盖。

import { from, pull, bytes, text } from 'node:stream/iter';
import { compressGzip, decompressGzip } from 'node:zlib/iter';

// 异步往返
const compressed = await bytes(pull(from('hello'), compressGzip()));
const original = await text(pull(from(compressed), decompressGzip()));
console.log(original); // 'hello'
compressBrotli(options?): void
M

compressBrotliSync

History
compressBrotliSync(options?): void
Attributes
options:<Object>
chunkSize:<number>
输出缓冲区大小。 默认: 65536 (64 KB)。
params:<Object>
键值对象,其中键和值是  zlib.constants 条目。最重要的压缩器参数是:
BROTLI_PARAM_MODE:
BROTLI_MODE_GENERIC (默认)、 BROTLI_MODE_TEXTBROTLI_MODE_FONT
BROTLI_PARAM_QUALITY:
范围从 BROTLI_MIN_QUALITYBROTLI_MAX_QUALITY默认: 6 (不是 BROTLI_DEFAULT_QUALITY 即 11)。质量 6 适用于流式传输;质量 11 旨在用于离线/构建时压缩。
BROTLI_PARAM_SIZE_HINT:
预期输入大小。 默认: 0 (未知)。
BROTLI_PARAM_LGWIN:
窗口大小 (log2)。 默认: 20 (1 MB)。 Brotli 库默认值为 22 (4 MB);降低的默认值节省了内存,而对流式工作负载的压缩影响不大。
BROTLI_PARAM_LGBLOCK:
输入块大小 (log2)。 完整列表请参阅 zlib 文档中的 Brotli 压缩器选项
返回: <Object> 一个有状态转换。

创建一个 Brotli 压缩转换。输出与 zlib.brotliDecompress()decompressBrotli()/decompressBrotliSync() 兼容。

compressDeflate(options?): void
M

compressDeflateSync

History
compressDeflateSync(options?): void
Attributes
options:<Object>
chunkSize:<number>
输出缓冲区大小。 默认: 65536 (64 KB)。
level:<number>
压缩级别 ( 0 - 9 )。 默认: 4
windowBits:<number>
默认: Z_DEFAULT_WINDOWBITS (15)。
memLevel:<number>
默认: 9
strategy:<number>
默认: Z_DEFAULT_STRATEGY
返回: <Object> 一个有状态转换。

创建一个 deflate 压缩转换。输出与 zlib.inflate()decompressDeflate()/decompressDeflateSync() 兼容。

compressGzip(options?): void
M

compressGzipSync

History
compressGzipSync(options?): void
Attributes
options:<Object>
chunkSize:<number>
输出缓冲区大小。 默认: 65536 (64 KB)。
level:<number>
压缩级别 ( 0 - 9 )。 默认: 4
windowBits:<number>
默认: Z_DEFAULT_WINDOWBITS (15)。
memLevel:<number>
默认: 9
strategy:<number>
默认: Z_DEFAULT_STRATEGY
返回: <Object> 一个有状态转换。

创建一个 gzip 压缩转换。输出与 zlib.gunzip()decompressGzip()/decompressGzipSync() 兼容。

compressZstd(options?): void
M

compressZstdSync

History
compressZstdSync(options?): void
Attributes
options:<Object>
chunkSize:<number>
输出缓冲区大小。 默认: 65536 (64 KB)。
params:<Object>
键值对象,其中键和值是  zlib.constants 条目。最重要的压缩器参数是:
ZSTD_c_compressionLevel:
默认: ZSTD_CLEVEL_DEFAULT (3)。
ZSTD_c_checksumFlag:
生成校验和。 默认: 0
ZSTD_c_strategy:
压缩策略。值包括 ZSTD_fastZSTD_dfastZSTD_greedyZSTD_lazyZSTD_lazy2ZSTD_btlazy2ZSTD_btoptZSTD_btultraZSTD_btultra2 。 完整列表请参阅 zlib 文档中的 Zstd 压缩器选项
pledgedSrcSize:<number>
预期未压缩大小(可选提示)。
返回: <Object> 一个有状态转换。

创建一个 Zstandard 压缩转换。输出与 zlib.zstdDecompress()decompressZstd()/decompressZstdSync() 兼容。

decompressBrotli(options?): void
M

decompressBrotliSync

History
decompressBrotliSync(options?): void
Attributes
options:<Object>
chunkSize:<number>
输出缓冲区大小。 默认: 65536 (64 KB)。
params:<Object>
键值对象,其中键和值是  zlib.constants 条目。可用的解压缩器参数:
BROTLI_DECODER_PARAM_DISABLE_RING_BUFFER_REALLOCATION:
布尔 标志,影响内部内存分配。
BROTLI_DECODER_PARAM_LARGE_WINDOW:
布尔标志,启用“大 窗口 Brotli"模式(与 RFC 7932 不兼容)。 详细信息请参阅 zlib 文档中的 Brotli 解压缩器选项
返回: <Object> 一个有状态转换。

创建一个 Brotli 解压缩转换。

decompressDeflate(options?): void
M

decompressDeflateSync

History
decompressDeflateSync(options?): void
Attributes
options:<Object>
chunkSize:<number>
输出缓冲区大小。 默认: 65536 (64 KB)。
windowBits:<number>
默认: Z_DEFAULT_WINDOWBITS (15)。
返回: <Object> 一个有状态转换。

创建一个 deflate 解压缩转换。

decompressGzip(options?): void
M

decompressGzipSync

History
decompressGzipSync(options?): void
Attributes
options:<Object>
chunkSize:<number>
输出缓冲区大小。 默认: 65536 (64 KB)。
windowBits:<number>
默认: Z_DEFAULT_WINDOWBITS (15)。
返回: <Object> 一个有状态转换。

创建一个 gzip 解压缩转换。

decompressZstd(options?): void
M

decompressZstdSync

History
decompressZstdSync(options?): void
Attributes
options:<Object>
chunkSize:<number>
输出缓冲区大小。 默认: 65536 (64 KB)。
params:<Object>
键值对象,其中键和值是  zlib.constants 条目。可用的解压缩器参数:
ZSTD_d_windowLogMax:
解压缩器将分配的最大窗口大小 (log2)。 限制恶意输入的内存使用。 详细信息请参阅 zlib 文档中的 Zstd 解压缩器选项
返回: <Object> 一个有状态转换。

创建一个 Zstandard 解压缩转换。