Fs artıları ve eksileri nelerdir.vs fs createReadStream.node.js içinde readFile?
Node.js ile ben ciddiye alıyorum ve bir dosya okuma ve tel aşağı göndermek için iki yol keşfettim, var olduğunu kurdum ve writeHead ile doğru MİME türünü gönderdi sonra:
// 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();
});
Ben bu fs varsayarak ben doğru.createReadStream eğer söz konusu dosya büyük bir şey olsaydı, daha iyi bir kullanıcı deneyimi sağlayabilir, bir video gibi mi? Blok-ish daha az olabilir; bu doğru mu sanki? Diğer artıları, eksileri, uyarılar, ya da Bilmem Gereken ayrıntılar var mı?
CEVAP
Eğer sadece kanca için gidiyoruz eğer daha iyi bir yaklaşım, "data" "(yaz)" ve "" için "() sonuna": kapatın
// 0.3.x style
fs.createReadStream(filename, {
'bufferSize': 4 * 1024
}).pipe(response)
// 0.2.x style
sys.pump(fs.createReadStream(filename, {
'bufferSize': 4 * 1024
}), response)
read.pipe(write)
sys.pump(read, write)
yaklaşım aynı zamanda akış kontrolü ekleme yararı vardır. Eğer veri akışı gibi hızlı bir şekilde kabul edemez yazma, okuma veri akışı bellek tamponlu alma miktarını en aza indirecek şekilde geri çekil, söyleyeceğim.
flags:"r"
mode:0666
bir FileReadStream olduğu gerçeğini ima vardır. binary
enconding eğer bir kodlama belirtilmemişse ıtiraz değil, sadece ham veri arabellekleri ile çalışacağız.
Ayrıca, dosya daha slicker hizmet edecek bazı diğer güzellikler ekleyebilirsiniz:
req.headers.range
kokusunu ve eğer/bytes=([0-9] )-([0-9] )/
gibi bir dize eşleşip eşleşmediğini görmek. Eğer öyleyse, sadece bu konumu baştan sona akışı. (Eksik sayı 0 anlamına gelir ya da "son".)- Stat dan inode ve saatine() karma ETag Başlığı arayın. Eğer bir istek "ıf-none-match başlığı olan,
304 Not Modified
Bir geri gönder." başlığı ile eşleşen alırsanız - Stat nesne üzerinde
mtime
tarihe karşıif-modified-since
Başlığı kontrol edin. Eğer 304 tarihinden bu yana sağlanan değiştirilmiş değildi.
Eğer varsa da, genel olarak, İçerik-Uzunluk Başlığı gönder. (Dosya statting sensin, bu senin hakkın.)
Uygulamanızda sql vs hesaplamaları ger...
Kullanıcı kimliği olarak e-posta adres...
Bir ViewModelLocator nedir ve DataTemp...
SQLite ve ortak Tercihleri artıları ve...
Ne kadar uzak DİNLENME node.js içinde ...