node.js实现简单的压缩/解压缩功能示例


Posted in Javascript onNovember 05, 2019

本文实例讲述了node.js实现简单的压缩/解压缩功能。分享给大家供大家参考,具体如下:

压缩的例子

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

写在后面

deflate压缩的使用也差不多,这里就不赘述。更多详细用法可参考官方文档。

希望本文所述对大家node.js程序设计有所帮助。

Javascript 相关文章推荐
读jQuery之六 缓存数据功能介绍
Jun 21 Javascript
Raphael一个用于在网页中绘制矢量图形的Javascript库
Jan 08 Javascript
如何使用jquery修改css中带有!important的样式属性
Apr 28 Javascript
js实现页面跳转的几种方法小结
May 16 Javascript
移动端 一个简单易懂的弹出框
Jul 06 Javascript
JSON 数据详解及实例代码分析
Jan 20 Javascript
JS常见简单正则表达式验证功能小结【手机,地址,企业税号,金额,身份证等】
Jan 22 Javascript
使用canvas进行图像编辑的实例
Aug 29 Javascript
vue2.0使用swiper组件实现轮播效果
Nov 27 Javascript
Angular2管道Pipe及自定义管道格式数据用法实例分析
Nov 29 Javascript
Node.js操作系统OS模块用法分析
Jan 04 Javascript
VuePress 静态网站生成方法步骤
Feb 14 Javascript
js实现随机点名程序
Sep 17 #Javascript
vue+vant-UI框架实现购物车的复选框全选和反选功能
Nov 05 #Javascript
Vue通过WebSocket建立长连接的实现代码
Nov 05 #Javascript
原生js实现随机点名功能
Nov 05 #Javascript
element-ui 文件上传修改文件名的方法示例
Nov 05 #Javascript
vue keep-alive 动态删除组件缓存的例子
Nov 04 #Javascript
javascript如何实现create方法
Nov 04 #Javascript
You might like
把77A收信机改造成收音机
2021/03/02 无线电
PHP的面向对象编程
2006/10/09 PHP
PHP实现提取一个图像文件并在浏览器上显示的代码
2012/10/06 PHP
PHP5常用函数列表(分享)
2013/06/07 PHP
PHP实现通过Luhn算法校验信用卡卡号是否有效
2015/03/23 PHP
Laravel中unique和exists验证规则的优化详解
2018/01/28 PHP
PHP长连接实现与使用方法详解
2018/02/11 PHP
jquery调用wcf并展示出数据的方法
2011/07/07 Javascript
javascript检测对象中是否存在某个属性判断方法小结
2013/05/19 Javascript
JavaScript中检测变量是否存在遇到的一些问题
2013/11/11 Javascript
JS延迟加载加快页面打开速度示例代码
2013/12/30 Javascript
angularJS中$apply()方法详解
2015/01/07 Javascript
javascript获取重复次数最多的字符
2015/07/08 Javascript
jquery捕捉回车键及获取checkbox值与异步请求的方法
2015/12/24 Javascript
JavaScript生成带有缩进的表格代码
2016/06/15 Javascript
jQuery leonaScroll 1.1 自定义滚动条插件(推荐)
2016/09/17 Javascript
自定义PC微信扫码登录样式写法
2017/12/12 Javascript
实时监控input框,实现输入框与下拉框联动的实例
2018/01/23 Javascript
如何在基于vue-cli的项目自定义打包环境
2018/11/10 Javascript
js实现图片推拉门效果代码实例
2019/05/18 Javascript
vue 父组件通过$refs获取子组件的值和方法详解
2019/11/07 Javascript
Vue +WebSocket + WaveSurferJS 实现H5聊天对话交互的实例
2020/11/18 Vue.js
对Python 获取类的成员变量及临时变量的方法详解
2019/01/22 Python
OpenCV-Python 摄像头实时检测人脸代码实例
2019/04/30 Python
Python OpenCV实现视频分帧
2019/06/01 Python
Django crontab定时任务模块操作方法解析
2020/09/10 Python
python简单实现插入排序实例代码
2020/12/16 Python
轻金属冶金专业毕业生自荐信
2013/11/02 职场文书
初中三年毕业生的自我评价分享
2014/02/14 职场文书
体育课课后反思
2014/04/24 职场文书
2015年小学生新年寄语
2014/12/08 职场文书
学校开除通知书
2015/04/25 职场文书
河童之夏观后感
2015/06/11 职场文书
pdf论文中python画的图Type 3 fonts字体不兼容的解决方案
2021/04/24 Python
Python爬虫之爬取最新更新的小说网站
2021/05/06 Python
WebRTC记录音视频流(web技术分享)
2022/02/24 Javascript