在我的项目中,客户端将请求从具有 id 的服务器下载文件。我必须执行以下操作:
- 验证来自 mongoDb 的 id
- 检查扩展
- 检查文件是否存在
- 读取文件并将内容写入响应
我正在使用以下代码检查文件并发送响应。
fs.exists(filename, function(exists) {
if (!exists) {
res.writeHead(404, '', {
"Content-Type" : "text/plain"
})
res.write("404 Not Found\n");
res.end();
return;
}
fs.readFile(filename, "binary", function(err, file) {
if (err) {
res.writeHead(500, '', {
"Content-Type" : "text/plain"
})
res.write(err + "\n");
res.end();
return;
}
res.setHeader("Pragma", "public");
res.setHeader("Cache-Control: private, max-age=3600");
res.setHeader("Transfer-Encoding: chunked");
res.setHeader("Range: chunked");
res.writeHead(200, '', {
"Content-Type" : contentType
});
res.write(file, "binary");
res.end(file, "binary");
});
});
在几毫秒内,客户端将请求数百个文件。支持的文件类型是图像、音频或视频。
当文件夹中有很多文件时,node.js 会花费太多时间来下载文件。我怎样才能提高性能?