我有一个快递服务器,需要将大约100个html文件写入项目根目录中的一个目录中。
我可以通过两种方式构建此服务器:服务器可以从浏览器接收请求,然后启动100个请求,并在完成后发送200个请求,或者 每次成功写入文件后,我都可以发送200,然后像每个文件一样来回移动。
我的问题是,在使用express / node.js时,哪种性能更好?
在方案1中,服务器应该只是坐在那里为多个用户完成所有工作吗?我会遇到内存问题吗?因为 我可以将该文件列表放在浏览器中,并单独调用我的节点服务器,以从外部API检索和写入每个文件。
这是第一种情况的外观。路由会获取文件列表,然后为每个文件进行呼叫。
//this whole request takes about 3 minutes to complete due to rate limiting of the external APIs.
router.get('/api/myroute', (req, res, next) => {
//contact a remote server's API, it sends back a big list of files.
REMOTE_SERVER.file_list.list(USER_CREDS.id).then(files => {
//we need to get the contents of each specific file, so we do that here.
Promise.all(files.map((item, i) =>
//they have an API for specific files, but you need the list of those files first like we retrieved above.
//more specifically you need a key for each file that is in the file_list object.
REMOTE_SERVER.specific_file.get(USER_CREDS.id, {
file: { key: files[i].key }
}).then(asset => {
//write the contents of each file to a directory called "my_files" in the project root.
fs.writeFile('./my_files/' + file.key, file.value, function (err) {
if (err) {
console.log(err);
};
});
})))
//send back a 200 only when the entire list has been retrieved and written to our directory.
.then(() => {
console.log("DONE!!");
res.status(200).send();
})
});
});