1. 压缩与解压缩处理

可以使用zlib模块进行压缩及解压缩处理,压缩文件以后可以减少体积,加快传输速度和节约带宽 代码

2. 压缩对象

压缩和解压缩对象都是一个可读可写流

方法 说明
zlib.createGzip 返回Gzip流对象,使用Gzip算法对数据进行压缩处理
zlib.createGunzip 返回Gzip流对象,使用Gzip算法对压缩的数据进行解压缩处理
zlib.createDeflate 返回Deflate流对象,使用Deflate算法对数据进行压缩处理
zlib.createInflate 返回Deflate流对象,使用Deflate算法对数据进行解压缩处理

3. 压缩和解压缩

var zlib = require('zlib');
var fs = require('fs');function zip(src) {var gzip = zlib.createGzip();//创建压缩流var inputStream = fs.createReadStream(src);var outputStream = fs.createWriteStream(src+'.gz');inputStream.pipe(gzip).pipe(outputStream);
}
zip('source.txt');function unzip(src){var gunzip = zlib.createGunzip();var inputStream = fs.createReadStream(src);var outputStream = fs.createWriteStream(src.slice(0,-3));inputStream.pipe(gunzip).pipe(outputStream);
}unzip('source.txt.gz');复制代码

4. 在http中的应用

var zlib = require('zlib');
var fs = require('fs');
var http = require('http');
http.createServer(function (request, response) {var raw = fs.createReadStream('.' + request.url);var acceptEncoding = request.headers['accept-encoding'];if (!acceptEncoding) {acceptEncoding = '';}if (acceptEncoding.match(/\bdeflate\b/)) {response.setHeader('Content-Encoding','deflate');raw.pipe(zlib.createDeflate()).pipe(response);} else if (acceptEncoding.match(/\bgzip\b/)) {response.setHeader('Content-Encoding','gzip');raw.pipe(zlib.createGzip()).pipe(response);} else {raw.pipe(response);}
}).listen(9090)
复制代码
var zlib = require('zlib');
var fs = require('fs');
var http = require('http');var request = http.get({host: 'localhost',path: '/index.html',port: 9090,headers: {'accept-encoding': 'gzip,deflate'}
})request.on('response', function (response) {var output = fs.createWriteStream('test.txt');switch (response.headers['content-encoding']) {case 'gzip':response.pipe(zlib.createGunzip()).pipe(output);break;case 'deflate':response.pipe(zlib.createInflate()).pipe(output);break;default:response.pipe(output);break;}
});
request.end();
复制代码

5. 方法调用

var zlib = require('zlib');
var fs = require('fs');var out = fs.createWriteStream('input.log');
var input = 'input';
zlib.gzip(input, function (err, buffer) {if (!err) {zlib.unzip(buffer, function (err, buffer) {if (!err) {console.log(buffer.toString());out.end(buffer);}})}
})复制代码

node 压缩模块速成相关推荐

  1. Node.js 模块之Nimble流程控制

    NodeJS异步的特性有时候会导致程序非常的难看,回调一层套着一层,这个时候就要用流程控制模块来控制究竟是同步还是异步了. Nimble是一个轻量.可移植的函数式流程控制模块.经过最小化和压缩后只有8 ...

  2. Node.js「一」—— Node.js 简介 / Node.js 模块 / 包 与 NPM

    本文为 Node.js 系列笔记第一篇.文章参考:nodejs 教程 -- 大地:<深入浅出 Node.js>:阮一峰 nodejs 博客 文章目录 一.Node 简介 1. 简单介绍 2 ...

  3. node web模块 (服务器端和客户端)

    node web模块 web服务器 web服务器指网站服务器,指驻留在因特网上的某种程序,web浏览器的基本功能,提供信息浏览服务 web支持服务器端的脚本语言,通过脚本语言从数据库获取数据,将结果返 ...

  4. CentOS7 Apache调优之开启deflate压缩模块

    启用Apache的deflate模块,可以开启压缩功能,减小网站传输时的带宽. apache需要编译安装方式,以/usr/local/apache为apache的安装目录,以源码包/usr/local ...

  5. ASP.NET页面进行GZIP压缩优化的几款压缩模块的使用简介及应用测试!(附源码)

    在介绍之前,先简单说一说ASP.NET服务端GZIP压缩模块的作用及工作原理,很多人编写网页的时候页面因为使用了大量的JS特效又或者放置很多大型动态广告导致了页面或脚本体积庞大,通常都会使用一些压缩工 ...

  6. eslint检测node 内部模块报错解决方案

    如上图所示,eslint检测node 内部模块报错解决, 解决方案: 代码: module.exports = {"env": {"browser": true ...

  7. 编写原生的Node.js模块

    通常,我们开发原生Node.js模块包括但不仅限于以下原因: 对性能有比较苛刻要求的应用.尽管Node.js得益于libuv,在异步I/O操作很有优势,但遇到数字计算时并不是一个很好的选择. 使用更加 ...

  8. python zipfile压缩_Python压缩模块zipfile实现原理及用法解析

    一.python压缩模块简介 python直接通过内置压缩模块可以直接进行压缩文件的创建: 内置模块 zipfile/rarfile 完成压缩文件的操作. 二. zipfile模块基础使用 2.1 对 ...

  9. node 大写_大写Node.js模块

    node 大写 Today, let's see a third party module that helps us in working with upper-case letters witho ...

最新文章

  1. 深度学习之好的博客文章
  2. 最佳实践: 勿在 Servlet 中实现 SingleThreadModel
  3. js动态创建两个div 把其中一个添加到另一个的里面_我开发了一个鸿蒙在线教育APP!...
  4. 090609 T 领域建模
  5. 90TB显存!英伟达发布新一代SuperPod超算,AI算力新巅峰!
  6. 包装类、正则表达式、自动拆装箱基本知识总结
  7. linux makefile详解
  8. eclipseEE连接mysql_mysql-eclipseEE连接MySQL出现问题,哪位大神可以帮我看看*^__^*,非常感谢...
  9. 滴滴回应上班高峰期大范围崩溃 :系统异常 订单差额部分统一退还
  10. linux下无权限安装anaconda和tensorflow-gpu
  11. POJ3263 Tallest Cow【差分数组】
  12. MacBook常用快捷键一览
  13. 源码多多- Discuz x2.5 版块的常用设置方法和技巧
  14. python自动轨迹绘制七边形_断面法计算土方步骤及其技巧
  15. 四叉树(QuadTree)图例、应用、实现
  16. LRO -- skb_buff->frags[] skb_buff->frag_list
  17. Java8 Instant 时间戳
  18. 互联网和大数据是什么意思_什么是互联网大数据?
  19. Autumn源码解读
  20. 【零样本知识蒸馏】(六)NeutIPS 2019:Zero-shot knowledge transfer via adversarial belief matching

热门文章

  1. Python3中闭包介绍
  2. jquery操作mysql_使用jQuery从数据库访问对象
  3. php上传图片 $__files没有信息_Python接口测试文件上传实例解析
  4. 语言趣味编程100例无水印_趣味c语言编程100例(三)
  5. nodejs运行python_如何在后台Python中运行子进程命令来启动nodejs服务器
  6. 什么叫安装文件索引服务器,搜出精彩 玩转Windows 2008系统心得
  7. add python3.7 to path是什么意思_一起读源码:为什么 loguru 的时间 rotation 不能只精确到天...
  8. linux下运行python unitest_Python unittest打印日志可以在Linux上运行,但在Windows上不行...
  9. androidstudio jni开发_初识NDK开发(一)
  10. Linux的常用命令!