mak*_*mak 19
不,它不会被阻止.node.js将以块的形式读取文件,然后将这些块发送到客户端.在块之间,它将为其他请求提供服务.
通过网络读取文件和发送数据是I/O绑定操作.node.js将首先要求操作系统读取文件的一部分,而操作系统正在执行该节点.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/');
Run Code Online (Sandbox Code Playgroud)
http://127.0.0.1:8000/
多次请求并观察node.js处理它们.
如果您要提供大量大文件,则可能需要尝试使用不同的bufferSize值.
归档时间: |
|
查看次数: |
5143 次 |
最近记录: |