У меня есть экспресс-сервер, которому нужно записать около 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();
})
});
});