node.js實(shí)現(xiàn)簡單的壓縮/解壓縮功能示例
本文實(shí)例講述了node.js實(shí)現(xiàn)簡單的壓縮/解壓縮功能。分享給大家供大家參考,具體如下:
壓縮的例子
非常簡單的幾行代碼,就完成了本地文件的gzip壓縮。
var fs = require('fs');
var zlib = require('zlib');
var gzip = zlib.createGzip();
var inFile = fs.createReadStream('./extra/fileForCompress.txt');
var out = fs.createWriteStream('./extra/fileForCompress.txt.gz');
inFile.pipe(gzip).pipe(out);
解壓的例子
同樣非常簡單,就是個反向操作。
var fs = require('fs');
var zlib = require('zlib');
var gunzip = zlib.createGunzip();
var inFile = fs.createReadStream('./extra/fileForCompress.txt.gz');
var outFile = fs.createWriteStream('./extra/fileForCompress1.txt');
inFile.pipe(gunzip).pipe(outFile);
服務(wù)端gzip壓縮
代碼超級簡單。首先判斷 是否包含 accept-encoding 首部,且值為gzip。
- 否:返回未壓縮的文件。
- 是:返回gzip壓縮后的文件。
var http = require('http');
var zlib = require('zlib');
var fs = require('fs');
var filepath = './extra/fileForGzip.html';
var server = http.createServer(function(req, res){
var acceptEncoding = req.headers['accept-encoding'];
var gzip;
if(acceptEncoding.indexOf('gzip')!=-1){ // 判斷是否需要gzip壓縮
gzip = zlib.createGzip();
// 記得響應(yīng) Content-Encoding,告訴瀏覽器:文件被 gzip 壓縮過
res.writeHead(200, {
'Content-Encoding': 'gzip'
});
fs.createReadStream(filepath).pipe(gzip).pipe(res);
}else{
fs.createReadStream(filepath).pipe(res);
}
});
server.listen('3000');
服務(wù)端字符串gzip壓縮
代碼跟前面例子大同小異。這里采用了**slib.gzipSync(str)**對字符串進(jìn)行g(shù)zip壓縮。
var http = require('http');
var zlib = require('zlib');
var responseText = 'hello world';
var server = http.createServer(function(req, res){
var acceptEncoding = req.headers['accept-encoding'];
if(acceptEncoding.indexOf('gzip')!=-1){
res.writeHead(200, {
'content-encoding': 'gzip'
});
res.end( zlib.gzipSync(responseText) );
}else{
res.end(responseText);
}
});
server.listen('3000');
寫在后面
deflate壓縮的使用也差不多,這里就不贅述。更多詳細(xì)用法可參考官方文檔。
希望本文所述對大家node.js程序設(shè)計(jì)有所幫助。
相關(guān)文章
node.js實(shí)現(xiàn)websocket的即時通訊詳解
這篇文章主要介紹了深入淺出講解websocket的即時通訊,服務(wù)器可以主動向客戶端推送信息,客戶端也可以主動向服務(wù)器發(fā)送信息,是真正的雙向平等對話,屬于服務(wù)器推送技術(shù)的一種,需要的朋友可以參考下2023-05-05
Nodejs實(shí)現(xiàn)爬蟲抓取數(shù)據(jù)實(shí)例解析
這篇文章主要介紹了Nodejs實(shí)現(xiàn)爬蟲抓取數(shù)據(jù)實(shí)例解析,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2018-07-07
詳解基于electron制作一個node壓縮圖片的桌面應(yīng)用
這篇文章主要介紹了詳解基于electron制作一個node壓縮圖片的桌面應(yīng)用,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-01-01
Node.js利用Express實(shí)現(xiàn)用戶注冊登陸功能(推薦)
這篇文章主要介紹了Node.js利用Express實(shí)現(xiàn)用戶注冊登陸功能,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-10-10

