Node以資料區塊的形式讀取檔案
在Node中,http回應標頭資訊中Transfer-Encoding預設是chunked。
Transfer-Encoding:chunked
Node天生的非同步機制,讓響應可以逐步產生。
這種發送資料區塊的方式在涉及到io操作的情況下非常高效。Node允許以資料區塊的形式往響應中寫資料,也允許以資料區塊的形式讀取檔案。
這樣可以有高效的記憶體配置,不需要把檔案全部讀取到記憶體中再全部響應給客戶,在處理大量請求時可以節省記憶體。
var http = require('http');
var fs = require('fs');
http.createServer(function(req,res){
res.writeHead(200,{'Context-Type':'image/png'});
var imagePath = 'D:/home.png';
var stream = fs.createReadStream(imagePath);
//一塊一塊的讀取資料
stream.on('data',function(chunk){
res.write(chunk);
});
stream.on('end',function(){
res.end();
});
stream.on('error',function(){
res.end();
});
}).listen(3000);
Node還提供了一個更簡潔的方法pipe()
var http = require('http');
var fs = require('fs');
http.createServer(function(req,res){
res.writeHead(200,{'Context-Type':'image/png'});
var imagePath = 'D:/home.png';
var stream = fs.createReadStream(imagePath);
stream.pipe(res);
}).listen(3000);
下面的內容你可能也喜歡:
如何在CentOS 7安裝Node.js
Ubuntu 14.04下搭建Node.js開發環境
Ubunru 12.04 下Node.js開發環境的安裝配置
Node.Js入門[PDF+相關代碼]
Node.js開發指南 高清PDF中文版 +源碼
Node.js入門開發指南中文版
Ubuntu 編譯安裝Node.js
Node.js 的詳細介紹:請點這裡
Node.js 的:請點這裡
本文永久更新連結地址: