nodejs express 导出 csv 慢
问题描述
使用 express 的 res.write 来写 csv 数据,数据已经从数据库读出来了(用的是 mongodb 可读流),但是 chrome 卡在即将开始下载一分半之后才开始有数据下载下来,会是什么原因。
相关代码
stream.on('data', data => { let finalData = processData(data);
let _data = JsonToArray(finalData, fields).join(',');
// console.log("Data:", _data.toString());
res.write(_data + '\n');
});
stream.on('error', err => {
res.end(err.message || err);
logger.error("Export Failed:", err.message || err);
});
stream.on('end', () => {
logger.info("Export finished after:", (new Date).getTime() - start, "ms");
res.end();
});
本地环境局域网导出没问题,测试服务器放在 aws 导出就很慢。
回答:
自己解决了问题,回来自己回答一下。
网络差时,写入 TCP Socket 输出缓冲区的速度较慢,同时 Node.js 端没有做 Backpressure 处理,导致响应返回时被截断,报错 net:ERR_INCOMPLETE_CHUNKDED_ENCODING .
以上是 nodejs express 导出 csv 慢 的全部内容, 来源链接: utcz.com/p/197026.html