NodeJS 服务器实现 gzip 压缩

本文介绍了如何在NodeJS服务器上实现gzip压缩,包括gzip简介、zlib模块的使用,以及服务器的实现和测试。通过服务器压缩,可以减少网络传输的流量和时间,提高静态资源加载效率。
摘要由CSDN通过智能技术生成

在这里插入图片描述


阅读原文


概述

在浏览器向服务器请求静态资源时,服务器为了减小在网络传输过程中消耗的流量和时间,都是将静态资源经过压缩后返回给服务器的,实现压缩的算法有 deflategzip 等,最常用的是 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)
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值