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

 更新时间:2019年11月05日 09:20:04   作者:苍青浪  
这篇文章主要介绍了node.js实现简单的压缩/解压缩功能,结合实例形式分析了node.js实现本地文件与服务器端压缩/解压缩相关操作技巧,需要的朋友可以参考下

本文实例讲述了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程序设计有所帮助。

相关文章

  • 完美解决node.js中使用https请求报CERT_UNTRUSTED的问题

    完美解决node.js中使用https请求报CERT_UNTRUSTED的问题

    下面小编就为大家带来一篇完美解决node.js中使用https请求报CERT_UNTRUSTED的问题。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-01-01
  • 学习Nodejs之fs模块的使用详解

    学习Nodejs之fs模块的使用详解

    这篇文章主要为大家详细介绍了Nodejs之fs模块的使用,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-02-02
  • 使用socket.io实现简单聊天室案例

    使用socket.io实现简单聊天室案例

    这篇文章主要介绍了使用socket.io实现简单聊天室案例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-01-01
  • 从零学习node.js之简易的网络爬虫(四)

    从零学习node.js之简易的网络爬虫(四)

    简单的爬虫实现原理很简单:发送http请求至目标地址获取HTML页面数据,然后从获取来的页面数据中提取需要的数据保存。下面这篇文章主要介绍了利用node.js实现简易的网络爬虫的相关资料,需要的朋友可以参考下。
    2017-02-02
  • node.js插件nodeclipse安装图文教程

    node.js插件nodeclipse安装图文教程

    这篇文章主要为大家分享了node.js插件nodeclipse安装图文教程,如何安装node.js支持插件,下面小编为大家分享具体步骤
    2016-05-05
  • node.js 如何监视文件变化

    node.js 如何监视文件变化

    这篇文章主要介绍了node.js 如何监视文件变化,帮助大家更好的理解和学习node.js,感兴趣的朋友可以了解下
    2020-09-09
  • Node.js读取文件内容示例

    Node.js读取文件内容示例

    本篇文章主要介绍了Node.js读取文件内容,Node.js读取文件内容包括同步和异步两种方式。有兴趣的可以了解一下。
    2017-03-03
  • 详解50行代码,Node爬虫练手项目

    详解50行代码,Node爬虫练手项目

    这篇文章主要介绍了50行代码,Node爬虫练手项目,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-04-04
  • nodejs解析xml文件方式(xml->json)

    nodejs解析xml文件方式(xml->json)

    这篇文章主要介绍了nodejs解析xml文件方式(xml->json),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-08-08
  • node.js 全局变量的具体使用

    node.js 全局变量的具体使用

    这篇文章主要介绍了node.js 全局变量的具体使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04

最新评论