阅读原文
概述
在浏览器向服务器请求静态资源时,服务器为了减小在网络传输过程中消耗的流量和时间,都是将静态资源经过压缩后返回给服务器的,实现压缩的算法有 deflate
和 gzip
等,最常用的是 gzip
压缩。
gzip 简介
在浏览器和服务器之间通过 gzip
压缩流实现传输的过程可以用下图表示。
当浏览器向服务器请求静态资源,服务器会将静态资源经过处理转换为压缩流,大大减小文件体积,然后将压缩流返回给浏览器,浏览器通过压缩的类型重新将压缩流解析成静态文件。
zlib 模块的使用
1、压缩
在 NodeJS 中通过 zlib
模块帮助我们实现不同类型的压缩,其实压缩的过程就是创建流的过程,创建的压缩流是 Transform 类型(转化流),读取文件的内容经过转化流创建一个新类型的文件。
// 文件:gzip.js
const zlib = require("zlib");
const fs = require("fs");
const path = require("path");
// 压缩
function gzip(source) {
// 处理输入和输出的文件路径
let sourcePath = path.join(__dirname, source);
let gzipPath = `${
sourcePath}.gz`;
// 创建转化流
let gzip = zlib.createGzip();
// 创建可读流
let rs = fs.createReadStream(sourcePath);
// 创建可写流
let ws = fs.createWriteStream(gzipPath);
// 实现转化
rs.pipe(gzip).pipe(ws)