node.js - 努力理解可读流上的 highWaterMark
问题描述
我看到一些我对 busboy 和节点流 highWaterMark 属性不理解的行为。我希望块的大小最大为 highWaterMark 值,但块大小看起来不受 highWaterMark 设置的影响。
我已经fileHwm: 5
在 busboy 中设置了选项,并且我的快速路线设置如下
app.post('/upload', function(req, res, next) {
req.pipe(req.busboy); // Pipe it through busboy
req.busboy.on('file', (fieldname, file, filename) => {
console.log(`Upload of '${filename}' started`);
console.log(file);
file.on('readable', () => {
let chunk;
while (null !== (chunk = file.read())) {
console.log(`Received ${chunk.length} bytes of data.`);
}
});
});
});
当我登录时file
,它看起来没问题,我看到highWaterMark
属性设置得很好
FileStream {
_readableState:
ReadableState {
objectMode: false,
highWaterMark: 5,
...
但是我取出的块的大小并不5
像我预期的那样 - 相反,我看到了
Received 65395 bytes of data.
Received 65536 bytes of data.
Received 65536 bytes of data.
Received 65536 bytes of data.
那么给了什么?我本来希望read
一次只返回 5 个字节。并不是说 65kb 大小不好,这很好。我只是希望我了解发生了什么,以及是否可以限制缓冲区大小。
解决方案
推荐阅读
- node.js - 可调整大小的电子浏览器窗口未在平板电脑模式下显示
- postman - 在 Postman Runner 中执行多个测试
- c++ - vcpkg 似乎使用错误的编译器构建 Boost
- postgresql - 在 Postgresql 中查找从一张表到另一张表到最近城市的距离
- .net - .Net Core 3.0 Cookie 身份验证。授权属性总是重定向
- macos - Applescript 从脚本编辑器启动时运行良好,但在作为服务运行时运行
- c++ - 我收到“错误:预期的';' 在类定义之后”在 C++ 中使用类之后
- c# - 如何在 C# 中将数据(数组列表)转换为 Jpeg 文件或 Pdf 或布局
- html - Angular:类型检查模板无法正常工作
- python - 如何使用 piexif 修改 XPKeywords?