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

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

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

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

慕雪6442864 2019-05-13 08:08:24
nodejs fs 文件流傳輸要不要緩存區(qū)
查看完整描述

2 回答

?
浮云間

TA貢獻1829條經驗 獲得超4個贊

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

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

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

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

[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接受可寫流作為第一個參數,由傳輸源調用。

  • [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)聽...');  

  • });  



 




查看完整回答
反對 回復 2019-05-14
  • 2 回答
  • 0 關注
  • 512 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號