You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

中间件返回文件数据时,ReadableStream为何优于Buffer?

为什么ReadableStream比Buffer更适合处理文件上传?
  • 内存占用可控:Buffer会把整个文件的所有字节一次性加载到内存中,文件越大,内存占用越高,甚至可能触发内存溢出。而ReadableStream是分段读取、分段处理,每次仅加载一小段数据(比如几KB到几十KB)到内存,处理完成后就释放这部分内存,内存占用始终维持在低水平,不会随文件大小线性增长。

  • 支持异步流式处理:你可以在数据还没完全接收完毕时就开始处理(比如边接收边写入磁盘、边解析内容),无需等待整个文件加载完成。比如用busboy配合流时,接收到部分文件数据就可以直接通过pipe写入文件流,不用等所有数据攒成Buffer再处理,响应速度更快。

  • 避免内存浪费:用Buffer处理大文件时,内存会一直保留整个文件的副本,直到处理完成才释放。而流处理时,每段数据处理完就会被垃圾回收机制回收,不会占用额外内存空间。

你提到“流也需要将所有底层数据存储在内存中”是误解——流并不会把所有数据存在内存里,它是从数据源(比如HTTP请求的底层连接)按需读取,处理一段就丢弃一段,只有当前正在处理的那一小段数据会暂存在内存中。

内容的提问来源于stack exchange,提问作者Mr. X

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 22:24:13