Ich mache mit node.js rum und habe zwei Möglichkeiten entdeckt, eine Datei zu lesen und über das Kabel zu senden, sobald ich festgestellt habe, dass sie existiert, und den richtigen MIME-Typ mit writeHead gesendet habe:
// read the entire file into memory and then spit it out
fs.readFile(filename, function(err, data){
if (err) throw err;
response.write(data, 'utf8');
response.end();
});
// read and pass the file as a stream of chunks
fs.createReadStream(filename, {
'flags': 'r',
'encoding': 'binary',
'mode': 0666,
'bufferSize': 4 * 1024
}).addListener( "data", function(chunk) {
response.write(chunk, 'binary');
}).addListener( "close",function() {
response.end();
});
Bin ich zu Recht davon ausgegangen, dass fs.createReadStream eine bessere Benutzererfahrung bietet, wenn die betreffende Datei etwas Großes wie ein Video ist? Es fühlt sich an, als wäre es weniger blockartig; Ist das wahr? Gibt es andere Vor-, Nachteile, Vorbehalte oder Fallstricke, die ich wissen muss?