vite编程-Gzip

GZIP是什么?

gzip是GNU Zip的简称,是一个在Linux和其他类Unix系统中广泛使用的命令行压缩工具。它基于DEFLATE算法来有效减少文件大小,从而节省存储空间并加速文件传输。gzip可以压缩任何类型的文件,但特别适合文本文件,因为它对文本中的重复数据压缩效果显著

GZIP解决什么问题?

GZIP能够压缩服务器端的文件,减小Http传输过程文件的体积,在相同带宽前提下,减少传输时间。

GZIP请求和响应的协议是: 

请求头:accept-encoding:gzip

例如,B站js文件的请求头是:

Accept-Encoding: gzip, deflate, br, zstd

响应头:content-type: gzip

算法还可以有其他类型,例如,br。

响应头中的Content-Encoding: br表明服务器使用了Brotli算法对响应主体(即发送给客户端的实际数据内容)进行了压缩。Brotli是一种无损压缩算法,由Google开发并在2015年推出,设计初衷是为了提高网页内容的加载速度。与传统的gzip和deflate压缩算法相比,Brotli通常能提供更高的压缩比率,尤其是在压缩文本数据时,这使得通过网络传输的数据量减少,从而加快页面加载时间。现代的大多数浏览器都已经支持Brotli解码。

GZIP具体过程:

问题:

1. gzip是服务器端做压缩,为什么需要前端做?

服务器去做Gzip 压缩,它会用 CPU 去进行处理。大量的gzip压缩处理,势必会影响服务器的响应处理时间。前端提前做gzip的压缩处理,可以减少服务器端CPU的压力。

2. 是不是所有文件都需要做gzip压缩?

最终的目标是为了减少响应时间。响应时间包括传输时间和做Gzip压缩的时间。如果压缩占用的时间,比传输减少的时间多,那么就没必要采用Gzip压缩。这一点可以从nginx的配置中看出来。

nginx开启Gzip:

    # gzip模块设置
    gzip on;               #开启gzip压缩
    gzip_min_length 1k;    #最小压缩文件大小
    gzip_buffers 4 16k;    #压缩缓冲区
    gzip_http_version 1.1; #压缩版本
    gzip_comp_level 2;     #压缩等级
    
    # 压缩类型
    gzip_types text/plain;
    
    # 用于设置使用Gzip进行压缩发送是否携带“Vary:Accept-Encoding”头域的响应头部
    # 主要是告诉接收方,所发送的数据经过了Gzip压缩处理
    gzip_vary on; // 作用是指示 Nginx 在响应头中添加 Vary: Accept-Encoding 字段

从配置可以看出,可以配置最小压缩文件大小,压缩登记、压缩文件的类型。Gzip对大型项目是能够提供帮助,而对于小文件就没必要使用Gzip。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值