本文介绍了NodeJS服务器实现gzip压缩,分享给大家,具体如下:
在浏览器向服务器请求静态资源时,服务器为了减小在网络传输过程中消耗的流量和时间,都是将静态资源经过压缩后返回给服务器的,实现压缩的算法有<代码>缩小代码>和<代码> gzip> 代码等,最常用的是<代码> gzip 代码>压缩。
在浏览器和服务器之间通过<代码> gzip 代码>压缩流实现传输的过程可以用下图表示。
当浏览器向服务器请求静态资源,服务器会将静态资源经过处理转换为压缩流,大大减小文件体积,然后将压缩流返回给浏览器,浏览器通过压缩的类型重新将压缩流解析成静态文件。
<强> 1,压缩强>
在NodeJS中通过<代码> zlib 代码>模块帮助我们实现不同类型的压缩,其实压缩的过程就是创建流的过程,创建的压缩流是变换类型(转化流),读取文件的内容经过转化流创建一个新类型的文件。
const zlib=要求(“zlib”); const fs=要求(fs); const path=要求(“路径”);//压缩 函数gzip(源){//处理输入和输出的文件路径 让路径=路径。加入(__dirname、源); 让gzipPath=$ {sourcePath} . gz的;//创建转化流 让gzip=zlib.createGzip ();//创建可读流 让rs=fs.createReadStream(路径);//创建可写流 让ws=fs.createWriteStream (gzipPath);//实现转化 rs.pipe (gzip) .pipe (ws); } gzip (index . html),
执行上面代码查看根目路是否出现<代码>索引。广州代码>压缩包。
<强> 2,解压强>
压缩的过程是可逆的,可以压缩就可以解压,无论是在浏览器还是在服务器,我们下面实现解压的方法。
const zlib=要求(“zlib”); const fs=要求(fs); const path=要求(“路径”);//解压 函数gunzip(源){//处理输入和输出的文件路径 让路径=路径。加入(__dirname、源); 让filePath=路径。加入(__dirname路径。:来源,. gz));//创建转化流 让解压=zlib.createGunzip ();//创建可读流 让rs=createReadStream(路径);//创建可写流 让ws=createWriteStream (filePath);//实现转化 rs.pipe(解压缩).pipe (ws); } gunzip (“index.html.gz”);<代码>
删除原来索引。>