不,它不会被阻止。node.js将分块读取文件,然后将那些块发送到客户端。在大块之间,它将处理其他请求。
通过网络读取文件和发送数据是I /
O绑定的操作。首先,node.js将要求操作系统读取文件的一部分,而在操作系统执行该操作时,node.js将为另一个请求提供服务。当操作系统将数据返回到node.js时,node.js将告诉操作系统将数据发送到客户端。在发送数据时,node.js将处理另一个请求。
自己尝试:
创建一个大文件
dd if=/dev/zero of=file.dat bs=1G count=1
运行此node.js应用
var http = require('http');var fs = require('fs');var i = 1;http.createServer(function (request, response) { console.log('starting #' + i++); var stream = fs.createReadStream('file.dat', { bufferSize: 64 * 1024 }); stream.pipe(response);}).listen(8000);console.log('Server running at http://127.0.0.1:8000/');请求
http://127.0.0.1:8000/几次并观察node.js处理所有这些。
如果要提供大量大文件,则可能需要尝试使用不同的bufferSize值。



