Node.js | Streams



Стрим — это концепция, c помощью которой можно обрабатывать данные небольшими частями, что позволяет задействовать небольшой объем оперативной памяти.

Например нужно записать "тяжелый файл"



const fs = require('fs');

const file = fs.createWriteStream('./big.file');

for(let i=0; i<= 1e6; i++) {

file.write('Длинный текст\n');

}

file.end();



Запуская сервер мы получим нагрузку на оперативную память ~ 400 MB

Модуль fs.createReadStream может предоставить нам Stream



const fs = require('fs');

const server = require('http').createServer();

server.on('request', (req, res) => {

const src = fs.createReadStream('./big.file');

src.pipe(res);

});

server.listen(8000);



Когда клиент запросит этот файл, мы транслируем его по частям, что означает, что мы вообще не буферизуем его в памяти. Использование памяти снизилось до 25 МБ.



В статье вы найдете больше информации и где еще применяют потоки.