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 相关文章推荐
我见过最全的个人js加解密功能页面
Dec 12 Javascript
JS多物体 任意值 链式 缓冲运动
Aug 10 Javascript
js用Date对象处理时间实现思路及代码
Jan 31 Javascript
文件编码导致jquery失效的解决方法
Jun 26 Javascript
jquery使用淘宝接口跨域查询手机号码归属地实例
Nov 28 Javascript
购物车选中得到价格实现示例
Jan 26 Javascript
Bootstrap CSS组件之输入框组
Dec 17 Javascript
移动端效果之Swiper详解
Oct 09 Javascript
Vue 应用中结合vux使用微信 jssdk的方法
Aug 28 Javascript
javascript之分片上传,断点续传的实际项目实现详解
Sep 05 Javascript
JavaScript简易计算器制作
Jan 17 Javascript
实例讲解React 组件生命周期
Jul 08 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
PHP 第二节 数据类型之转换
2012/04/28 PHP
学习php设计模式 php实现访问者模式(Visitor)
2015/12/07 PHP
详解PHP实现支付宝小程序用户授权的工具类
2018/12/25 PHP
php函数式编程简单示例
2019/08/08 PHP
js中parseInt函数浅谈
2013/07/31 Javascript
JavaScript中字符串与Unicode编码互相转换的实现方法
2015/12/18 Javascript
Angularjs中UI Router的使用方法
2016/05/14 Javascript
js提交form表单,并传递参数的实现方法
2016/05/25 Javascript
Bootstrap自动适应PC、平板、手机的Bootstrap栅格系统
2016/05/27 Javascript
BootStrap Table对前台页面表格的支持实例讲解
2016/12/22 Javascript
从零开始学习Node.js系列教程之设置HTTP头的方法示例
2017/04/13 Javascript
angularjs利用directive实现移动端自定义软键盘的示例
2017/09/20 Javascript
JavaScript中Object值合并方法详解
2017/12/22 Javascript
vue实现条件判断动态绑定样式的方法
2018/09/29 Javascript
webpack打包非模块化js的方法
2018/10/24 Javascript
vue鼠标悬停事件实例详解
2019/04/01 Javascript
JavaScript 严格模式(use strict)用法实例分析
2020/03/04 Javascript
[01:55]TI9显影之尘系列 - Evil Geniuses
2019/08/22 DOTA
[01:19:33]DOTA2-DPC中国联赛 正赛 iG vs VG BO3 第一场 2月2日
2021/03/11 DOTA
PyQt 线程类 QThread使用详解
2017/07/16 Python
Python3网络爬虫之使用User Agent和代理IP隐藏身份
2017/11/23 Python
教你用Python写安卓游戏外挂
2018/01/11 Python
Diango + uwsgi + nginx项目部署的全过程(可外网访问)
2018/04/22 Python
Selenium控制浏览器常见操作示例
2018/08/13 Python
Python 使用类写装饰器的小技巧
2018/09/30 Python
浅谈Python反射 & 单例模式
2019/03/21 Python
Pytorch使用MNIST数据集实现基础GAN和DCGAN详解
2020/01/10 Python
详解CSS3阴影 box-shadow的使用和技巧总结
2016/12/03 HTML / CSS
美国一家著名的儿童鞋制造商:Stride Rite
2017/01/02 全球购物
Pamela Love官网:纽约设计师Pamela Love的精美、时尚和穿孔珠宝
2020/10/19 全球购物
兼职学生的自我评价
2013/11/24 职场文书
市场营销个人求职信范文
2014/02/02 职场文书
预备党员2014全国两会学习心得体会
2014/03/10 职场文书
2015年设计师个人工作总结
2015/04/25 职场文书
导游词之鲁迅祖居
2019/10/17 职场文书
导游词之西安大清真寺
2019/12/17 职场文书