- assert 断言
- async_hooks 异步钩子
- async_hooks/context 异步上下文
- buffer 缓冲区
- C++插件
- C/C++插件(使用 Node-API)
- C++嵌入器
- child_process 子进程
- cluster 集群
- CLI 命令行
- console 控制台
- crypto 加密
- crypto/webcrypto 网络加密
- debugger 调试器
- deprecation 弃用
- dgram 数据报
- diagnostics_channel 诊断通道
- dns 域名服务器
- domain 域
- env 环境变量
- Error 错误
- events 事件触发器
- fs 文件系统
- global 全局变量
- http 超文本传输协议
- http2 超文本传输协议 2.0
- https 安全超文本传输协议
- inspector 检查器
- Intl 国际化
- module 模块
- module/cjs CommonJS 模块
- module/esm ECMAScript 模块
- module/package 包模块
- module/typescript TS 模块
- net 网络
- os 操作系统
- path 路径
- perf_hooks 性能钩子
- permission 权限
- process 进程
- punycode 域名代码
- querystring 查询字符串
- readline 逐行读取
- repl 交互式解释器
- report 诊断报告
- sea 单个可执行应用程序
- sqlite 轻型数据库
- stream 流
- stream/iter 可迭代流
- stream/web 网络流
- string_decoder 字符串解码器
- test 测试
- timers 定时器
- tls 安全传输层
- trace_events 跟踪事件
- tty 终端
- url 网址
- util 实用工具
- v8 引擎
- vm 虚拟机
- wasi 网络汇编系统接口
- worker_threads 工作线程
- zlib 压缩
- zlib/iter 可迭代压缩
Node.js v26.0.0 文档
- Node.js v26.0.0
-
目录
- 可迭代压缩
compressBrotli([options])compressBrotliSync([options])compressDeflate([options])compressDeflateSync([options])compressGzip([options])compressGzipSync([options])compressZstd([options])compressZstdSync([options])decompressBrotli([options])decompressBrotliSync([options])decompressDeflate([options])decompressDeflateSync([options])decompressGzip([options])decompressGzipSync([options])decompressZstd([options])decompressZstdSync([options])
- 可迭代压缩
-
导航
- assert 断言
- async_hooks 异步钩子
- async_hooks/context 异步上下文
- buffer 缓冲区
- C++插件
- C/C++插件(使用 Node-API)
- C++嵌入器
- child_process 子进程
- cluster 集群
- CLI 命令行
- console 控制台
- crypto 加密
- crypto/webcrypto 网络加密
- debugger 调试器
- deprecation 弃用
- dgram 数据报
- diagnostics_channel 诊断通道
- dns 域名服务器
- domain 域
- env 环境变量
- Error 错误
- events 事件触发器
- fs 文件系统
- global 全局变量
- http 超文本传输协议
- http2 超文本传输协议 2.0
- https 安全超文本传输协议
- inspector 检查器
- Intl 国际化
- module 模块
- module/cjs CommonJS 模块
- module/esm ECMAScript 模块
- module/package 包模块
- module/typescript TS 模块
- net 网络
- os 操作系统
- path 路径
- perf_hooks 性能钩子
- permission 权限
- process 进程
- punycode 域名代码
- querystring 查询字符串
- readline 逐行读取
- repl 交互式解释器
- report 诊断报告
- sea 单个可执行应用程序
- sqlite 轻型数据库
- stream 流
- stream/iter 可迭代流
- stream/web 网络流
- string_decoder 字符串解码器
- test 测试
- timers 定时器
- tls 安全传输层
- trace_events 跟踪事件
- tty 终端
- url 网址
- util 实用工具
- v8 引擎
- vm 虚拟机
- wasi 网络汇编系统接口
- worker_threads 工作线程
- zlib 压缩
- zlib/iter 可迭代压缩
可迭代压缩#>
🌐 Iterable Compression
源代码: lib/zlib/iter.js
node:zlib/iter 模块提供压缩和解压缩转换,可用于 node:stream/iter 可迭代流 API。
🌐 The node:zlib/iter module provides compression and decompression transforms
for use with the node:stream/iter iterable streams API.
此模块仅在启用 --experimental-stream-iter CLI 标志时可用。
🌐 This module is available only when the --experimental-stream-iter CLI flag
is enabled.
每个算法都有一个异步版本(有状态异步生成器,用于 pull() 和 pipeTo())以及一个同步版本(有状态同步生成器,用于 pullSync() 和 pipeToSync())。
🌐 Each algorithm has both an async variant (stateful async generator, for use
with pull() and pipeTo()) and a sync variant (stateful sync
generator, for use with pullSync() and pipeToSync()).
异步转换在 libuv 线程池上运行压缩,将 I/O 与 JavaScript 执行重叠。同步转换直接在主线程上运行压缩。
🌐 The async transforms run compression on the libuv threadpool, overlapping I/O with JavaScript execution. The sync transforms run compression directly on the main thread.
注意:这些转换的默认设置针对流式传输吞吐量进行了优化, 并且与
node:zlib中的默认设置不同。特别是,gzip/deflate 的默认级别为 4(而不是 6),内存级别为 9(而不是 8),而 Brotli 默认质量为 6(而不是 11)。这些选择符合常见的 HTTP 服务器配置,并在仅略微降低压缩率的情况下提供显著更快的压缩速度。所有默认设置都可以通过选项进行覆盖。
import { from, pull, bytes, text } from 'node:stream/iter';
import { compressGzip, decompressGzip } from 'node:zlib/iter';
// Async round-trip
const compressed = await bytes(pull(from('hello'), compressGzip()));
const original = await text(pull(from(compressed), decompressGzip()));
console.log(original); // 'hello'const { from, pull, bytes, text } = require('node:stream/iter');
const { compressGzip, decompressGzip } = require('node:zlib/iter');
async function run() {
const compressed = await bytes(pull(from('hello'), compressGzip()));
const original = await text(pull(from(compressed), decompressGzip()));
console.log(original); // 'hello'
}
run().catch(console.error);
import { fromSync, pullSync, textSync } from 'node:stream/iter';
import { compressGzipSync, decompressGzipSync } from 'node:zlib/iter';
// Sync round-trip
const compressed = pullSync(fromSync('hello'), compressGzipSync());
const original = textSync(pullSync(compressed, decompressGzipSync()));
console.log(original); // 'hello'const { fromSync, pullSync, textSync } = require('node:stream/iter');
const { compressGzipSync, decompressGzipSync } = require('node:zlib/iter');
const compressed = pullSync(fromSync('hello'), compressGzipSync());
const original = textSync(pullSync(compressed, decompressGzipSync()));
console.log(original); // 'hello'
compressBrotli([options])#>
compressBrotliSync([options])#>
options<Object>chunkSize<number> 输出缓冲区大小。默认值:65536(64 KB)。params<Object> 键值对象,其中键和值都是zlib.constants条目。最重要的压缩器参数是:BROTLI_PARAM_MODE--BROTLI_MODE_GENERIC(默认),BROTLI_MODE_TEXT,或BROTLI_MODE_FONT。BROTLI_PARAM_QUALITY-- 范围从BROTLI_MIN_QUALITY到BROTLI_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-- 输入块大小 (以2为底的对数)。 有关完整列表,请参见 zlib 文档中的 Brotli 压缩器选项。
dictionary<Buffer> | <TypedArray> | <DataView>
- 返回:<Object> 有状态的变换。
创建一个 Brotli 压缩转换。输出与 zlib.brotliDecompress() 和 decompressBrotli()/decompressBrotliSync() 兼容。
🌐 Create a Brotli compression transform. Output is compatible with
zlib.brotliDecompress() and decompressBrotli()/decompressBrotliSync().
compressDeflate([options])#>
compressDeflateSync([options])#>
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。dictionary<Buffer> | <TypedArray> | <DataView>
- 返回:<Object> 有状态的变换。
创建一个 deflate 压缩转换。输出与 zlib.inflate() 和 decompressDeflate()/decompressDeflateSync() 兼容。
🌐 Create a deflate compression transform. Output is compatible with
zlib.inflate() and decompressDeflate()/decompressDeflateSync().
compressGzip([options])#>
compressGzipSync([options])#>
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。dictionary<Buffer> | <TypedArray> | <DataView>
- 返回:<Object> 有状态的变换。
创建一个 gzip 压缩转换。输出与 zlib.gunzip() 和 decompressGzip()/decompressGzipSync() 兼容。
🌐 Create a gzip compression transform. Output is compatible with zlib.gunzip()
and decompressGzip()/decompressGzipSync().
compressZstd([options])#>
compressZstdSync([options])#>
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_fast、ZSTD_dfast、ZSTD_greedy、ZSTD_lazy、ZSTD_lazy2、ZSTD_btlazy2、ZSTD_btopt、ZSTD_btultra、ZSTD_btultra2。完整列表请参见 zlib 文档中的 Zstd 压缩器选项。
pledgedSrcSize<number> 预期未压缩大小(可选提示)。dictionary<Buffer> | <TypedArray> | <DataView>
- 返回:<Object> 有状态的变换。
创建一个 Zstandard 压缩转换。输出与 zlib.zstdDecompress() 和 decompressZstd()/decompressZstdSync() 兼容。
🌐 Create a Zstandard compression transform. Output is compatible with
zlib.zstdDecompress() and decompressZstd()/decompressZstdSync().
decompressBrotli([options])#>
decompressBrotliSync([options])#>
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 解压缩器选项。
dictionary<Buffer> | <TypedArray> | <DataView>
- 返回:<Object> 有状态的变换。
创建一个 Brotli 解压缩转换。
🌐 Create a Brotli decompression transform.
decompressDeflate([options])#>
decompressDeflateSync([options])#>
options<Object>chunkSize<number> 输出缓冲区大小。默认值:65536(64 KB)。windowBits<number> 默认:Z_DEFAULT_WINDOWBITS(15)。dictionary<Buffer> | <TypedArray> | <DataView>
- 返回:<Object> 有状态的变换。
创建一个 deflate 解压缩转换。
🌐 Create a deflate decompression transform.
decompressGzip([options])#>
decompressGzipSync([options])#>
options<Object>chunkSize<number> 输出缓冲区大小。默认值:65536(64 KB)。windowBits<number> 默认:Z_DEFAULT_WINDOWBITS(15)。dictionary<Buffer> | <TypedArray> | <DataView>
- 返回:<Object> 有状态的变换。
创建一个 gzip 解压缩转换。
🌐 Create a gzip decompression transform.
decompressZstd([options])#>
decompressZstdSync([options])#>
options<Object>chunkSize<number> 输出缓冲区大小。默认值:65536(64 KB)。params<Object> 键值对象,其中键和值都是zlib.constants条目。可用的解压参数:ZSTD_d_windowLogMax-- 解压器将分配的最大窗口大小(以2为底的对数)。用于限制恶意输入的内存使用。有关详细信息,请参阅 zlib 文档中的 Zstd 解压选项。
dictionary<Buffer> | <TypedArray> | <DataView>
- 返回:<Object> 有状态的变换。
创建一个 Zstandard 解压缩转换。
🌐 Create a Zstandard decompression transform.