第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

nodejs fs 文件流傳輸要不要緩存區(qū)

nodejs fs 文件流傳輸要不要緩存區(qū)

蝴蝶刀刀 2019-03-14 10:10:11
nodejs fs 文件流傳輸要不要緩存區(qū)
查看完整描述

2 回答

?
郎朗坤

TA貢獻(xiàn)1921條經(jīng)驗 獲得超9個贊

node中有個流的概念,stream。代表數(shù)據(jù)流動方向:向內(nèi)流(可讀流),向外流(可寫流)。常用的流形式是文件,和tcp套接字。流是以快為單位發(fā)送數(shù)據(jù),通過監(jiān)聽‘data’事件,每一次得到一塊數(shù)據(jù)即進(jìn)行一次操作,當(dāng)數(shù)據(jù)結(jié)束時,監(jiān)聽end事件,執(zhí)行后續(xù)操作。

可讀流可以通過stream.pause();stream.resume()暫?;謴?fù)流。其中暫停流在寫文件時會停止從該文件中讀取數(shù)據(jù),如果是TCP套接字則不會讀取新的數(shù)據(jù)包,終止其他終端來的數(shù)據(jù)包??蓪懥魇且獜膎ode向外輸出的數(shù)據(jù),可以是TCP連接也可以是文件。node不會在io操作上阻塞,寫入的緩沖區(qū)如果被刷新,會發(fā)射drain事件,如果沒有被刷新,數(shù)據(jù)將被存儲在進(jìn)程內(nèi)存中。

TCP連接是雙向的,因此既是可讀流也是可寫流。以node作為服務(wù)器,則HTTP的請求是可讀流,響應(yīng)是可寫流。

通常在服務(wù)器端讀取本地數(shù)據(jù)是快速的,即可讀流是快速的。然而由于網(wǎng)絡(luò)原因,很多響應(yīng)即可寫流是無法保證的,如果請求太多(在服務(wù)器的讀寫范圍內(nèi)),而響應(yīng)太慢,會導(dǎo)致服務(wù)器的可寫流填滿。此時需要避免慢客戶端(前端響應(yīng)慢)的情況。

[javascript] view plain copy

  • fs = require('fs');  

  • require('http').createServer(function (req,res) {  

  • var rs = fs.createReadStream('./1.txt');  

  • rs.on('data', function(data) {  

  • if(!res.write(data)){  

  • rs.pause();  

  • }  

  • });  

  • rs.on('drain', function(data) {  

  • rs.resume();  

  • });  

  • rs.on('end', function(){  

  • res.end();  

  • })  

  • }).listen(8080,function(){  

  • console.log('正在監(jiān)聽...');  

  • });  


  • 也可以使用stream.pipe();pipe接受可寫流作為第一個參數(shù),由傳輸源調(diào)用。

  • [javascript] view plain copy

  • fs = require('fs');  

  • require('http').createServer(function (req,res) {  

  • var rs = fs.createReadStream('./1.txt');  

  • rs.pipe(res);  

  • }).listen(8080,function(){  

  • console.log('正在監(jiān)聽...');  

  • });  



 


查看完整回答
反對 回復(fù) 2019-03-21
  • 2 回答
  • 0 關(guān)注
  • 1641 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號