Node.js / Express:我应该打多个电话还是一个大电话?

时间:2019-06-21 00:40:02

标签: javascript node.js express

我有一个快递服务器,需要将大约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();
            })
    });
});

0 个答案:

没有答案