www.6766.comNodeJS服务器实现gzip压缩的示例代码_node.js_脚本之家

www.6766.comNodeJS服务器实现gzip压缩的示例代码_node.js_脚本之家。服务器压缩其实是客商端与服务器在网络传输时的一种优化手腕,能够大大减小流量的消耗和响适当时候间,而
gzip 只是眼前最常用的一种压缩格式,即压缩算法。

测验服务器压缩

删去原本 index.html,实施解压代码,查看文件根目录是不是生成
index.html

在 NodeJS 中通过 zlib
模块帮忙我们兑现分化类别的压缩,其实压缩的经过就是创立流的经过,创设的压缩流是
Transform 类型,读取文件的剧情通过转变流创造二个新类型的文书。

// 引入依赖const http = require;const url = require;const path = require;const fs = require;const zlib = require;// 创建服务器const server = http.createServer => { // 处理 pathname,"/" 时默认读取 "/index.html" let { pathname } = url.parse; pathname = pathname !== "/" ? pathname : "/index.html"; // 获取读取文件的绝对路径 let p = path.join; // 查看路径是否合法 fs.access(p, err => { // 路径不合法则直接中断连接 if  return res.end; // 获取浏览器支持的压缩格式 let encoding = req.headers["accept-encoding"]; // 创建可读流 let rs = fs.createReadStream; // 支持 gzip 使用 gzip 压缩,支持 deflate 使用 deflate 压缩 if (encoding && encoding.match { let compress = zlib.createGzip(); let compressType = "gzip"; } else if (encoding && encoding.match { let compress = zlib.createDeflate(); let compressType = "deflate"; } else { // 否则直接返回可读流 return rs.pipe; } // 将压缩流返回并设置响应头 res.setHeader("Content-Encoding", compressType); rs.pipe; });});server.listen => { console.log;});

上述正是本文的全体内容,希望对我们的就学抱有扶持,也盼望大家多多点拨脚本之家。

const zlib = require;const fs = require;const path = require;// 解压function gunzip { // 处理输入和输出的文件路径 let sourcePath = path.join; let filePath = path.join(__dirname, path.basename; // 创建转化流 let unzip = zlib.createGunzip(); // 创建可读流 let rs = createReadStream; // 创建可写流 let ws = createWriteStream; // 实现转化 rs.pipe;}gunzip;

在浏览器和服务器之间通过 gzip 压缩流达成传输的进度能够用下图表示。

在浏览器与服务器的相互影响中,浏览器其实会通过诉求头 Accept-Encoding
告诉服务器当前援助解压的压缩格式,值为
gzip, deflate, br,多个压缩格式用 ,
隔绝,服务器在接受到浏览器央浼后,会依照乞求头的格式压缩能源,将裁减后的能源重返,并透过响应头
Content-Encoding 告诉浏览器当前服务器压缩的格式。

 gzip Hello GZIP!

减少的进程是可逆的,能够减去就足以解压,无论是在浏览器依旧在服务器,大家上边实现解压的不二等秘书技。

zlib 模块的运用

服务器的落实

当浏览器向服务器央求静态财富,服务器会将静态资源通过管理转变为压缩流,大大减小文件体积,然后将压缩流重临给浏览器,浏览器通过压缩的门类重新将压缩流分析成静态文件。

推行上面代码查看根目路是不是现身 index.gz 压缩包。

在浏览器向服务器要求静态能源时,服务器为了降少在互连网传输进程中消耗的流量和岁月,都是将静态能源通过压缩后重临给服务器的,完毕裁减的算法有
deflategzip 等,最常用的是 gzip 压缩。

总结

在上头服务器中一旦不通过响应头通告浏览器当前能源的压缩格式,浏览器会不驾驭该怎么样解压,暗中认可会当成文件下载,如
Chrome,所以在回去压缩流时必需透过 Content-Encoding
响应头布告浏览器当前的压缩格式。

我们在文书根目录创建四个 index.html 文件,代码如下。

gzip 简介

开发银行服务器 server.js,然后通过浏览器访问localhost:3000,查看页面能无法正确重回,并查看开采者工具 Network
中的响应头 Content-Encoding 的值是不是科学。

1、压缩

2、解压

正文介绍了NodeJS服务器达成gzip压缩,分享给大家,具体如下:

const zlib = require;const fs = require;const path = require;// 压缩function gzip { // 处理输入和输出的文件路径 let sourcePath = path.join; let gzipPath = `${sourcePath}.gz`; // 创建转化流 let gzip = zlib.createGzip(); // 创建可读流 let rs = fs.createReadStream; // 创建可写流 let ws = fs.createWriteStream; // 实现转化 rs.pipe;}gzip;

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图