千家信息网

怎么使用Node中的zlib

发表于:2026-11-04 作者:千家信息网编辑
千家信息网最后更新 2026年11月04日,本篇内容介绍了"怎么使用Node中的zlib"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!概览做过w
千家信息网最后更新 2026年11月04日怎么使用Node中的zlib

本篇内容介绍了"怎么使用Node中的zlib"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

概览

做过web性能优化的同学,对性能优化大杀器gzip应该不陌生。浏览器向服务器发起资源请求,比如下载一个js文件,服务器先对资源进行压缩,再返回给浏览器,以此节省流量,加快访问速度。

浏览器通过HTTP请求头部里加上Accept-Encoding,告诉服务器,"你可以用gzip,或者defalte算法压缩资源"。

Accept-Encoding:gzip, deflate

那么,在nodejs里,是如何对资源进行压缩的呢?答案就是Zlib模块。

入门实例:简单的压缩/解压缩

压缩的例子

非常简单的几行代码,就完成了本地文件的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);

服务端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();                  // 记得响应 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');

服务端字符串gzip压缩

代码跟前面例子大同小异。这里采用了slib.gzipSync(str)对字符串进行gzip压缩。

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');

"怎么使用Node中的zlib"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!

文件 服务 浏览器 资源 浏览 代码 例子 服务器 内容 字符 字符串 就是 性能 更多 知识 实用 陌生 大同小异 学有所成 接下来 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技 中智农互联网科技 互联网科技图片 深圳九邦互联网科技有限公司 互联网科技公司起名 北京路客互联网科技有限公司 以房互联网科技 深圳天众互联网科技公司 互联网 科技服务平台 甘肃拓世互联网科技有限公司 深圳卡尔迅互联网科技有限公司怎么样 广州慧亚互联网科技怎么样 团飞科技与伯堂互联网服务平台 互联网为啥属于高科技 卓翼科技产业互联网合作 下一代互联网重大应用科技园 互联网科技包装股份有限公司上市 互联网科技手抄报图片 互联网科技的前景 东风日产互联网科技公司叫什么 亿人帮互联网科技有限公司 善班互联网科技 苏州大垚互联网科技 郑州华宇互联网科技 互联网科技视频素材 富国互联网科技创新基金 九思连强互联网电子科技有限公司 米泉互联网科技专业怎么样 现代互联网科技公司 伍佰万互联网科技是干嘛的
0