私のプロジェクトでは、クライアントは 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 はファイルのダウンロードに時間がかかりすぎます。どうすればパフォーマンスを向上させることができますか?