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 相关文章推荐
CSS和Javascript简单复习资料
Jun 29 Javascript
jQuery中验证表单提交方式及序列化表单内容的实现
Jan 06 Javascript
javascript中解析四则运算表达式的算法和示例
Aug 11 Javascript
JS基于Ajax实现的网页Loading效果代码
Oct 27 Javascript
极力推荐一款小巧玲珑的可视化编辑器bootstrap-wysiwyg
May 27 Javascript
node.js中axios使用心得总结
Nov 29 Javascript
js 两数组去除重复数值的实例
Dec 06 Javascript
JavaScript模块详解
Dec 18 Javascript
纯JS实现可用于页码更换的飞页特效示例
May 21 Javascript
微信小程序官方动态自定义底部tabBar的例子
Sep 04 Javascript
浅析vue中的provide / inject 有什么用处
Nov 10 Javascript
layui实现显示数据表格、搜索和修改功能示例
Jun 03 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中3种生成XML文件方法的速度效率比较
2012/10/06 PHP
php实现根据url自动生成缩略图的方法
2014/09/23 PHP
php常用字符串处理函数实例分析
2014/11/22 PHP
php生成html文件方法总结
2014/12/01 PHP
php+mysql实现简单的增删改查功能
2015/07/13 PHP
zend framework重定向方法小结
2016/05/28 PHP
在你的网页中嵌入外部网页的方法
2007/04/02 Javascript
修改好的jquery滚动字幕效果实现代码
2011/06/22 Javascript
使用jquery动态加载javascript以减少服务器压力
2012/10/29 Javascript
jquery-syntax动态语法着色示例代码
2014/05/14 Javascript
node.js中的fs.realpathSync方法使用说明
2014/12/16 Javascript
JQuery实现展开关闭层的方法
2015/02/17 Javascript
jQuery+html5+css3实现圆角无刷新表单带输入验证功能代码
2015/08/21 Javascript
javascript实现网页端解压并查看zip文件
2015/12/15 Javascript
AngularJS控制器之间的通信方式详解
2016/11/03 Javascript
nodejs实现爬取网站图片功能
2017/12/14 NodeJs
在Angular中使用JWT认证方法示例
2018/09/10 Javascript
Vue Cli3 创建项目的方法步骤
2018/10/15 Javascript
JS实现在线ps功能详解
2019/07/31 Javascript
vue实现带过渡效果的下拉菜单功能
2020/02/19 Javascript
JavaScript 正则应用详解【模式、欲查、反向引用等】
2020/05/13 Javascript
python3生成随机数实例
2014/10/20 Python
python实现图片变亮或者变暗的方法
2015/06/01 Python
Python常用内置模块之xml模块(详解)
2017/05/23 Python
Python实现的简单模板引擎功能示例
2017/09/02 Python
Linux系统(CentOS)下python2.7.10安装
2018/09/26 Python
python+opencv打开摄像头,保存视频、拍照功能的实现方法
2019/01/08 Python
python上下文管理的使用场景实例讲解
2021/03/03 Python
微信浏览器左上角返回按钮拦截功能
2017/11/21 HTML / CSS
HTML5+CSS设置浮动却没有动反而在中间且错行的问题
2020/05/26 HTML / CSS
GAP欧盟网上商店:GAP EU
2016/09/13 全球购物
Casadei卡萨蒂官网:意大利奢侈鞋履品牌
2017/10/28 全球购物
毕业生简单求职信
2013/11/19 职场文书
销售员未完成销售业绩的检讨书
2014/10/12 职场文书
2014年药品销售工作总结
2014/12/16 职场文书
销售经理助理岗位职责
2015/04/13 职场文书