Nginx(13)-数据压缩是显著提升性能最简单方式

本文详细介绍了如何利用Nginx的gzip压缩技术优化HTML、CSS、JavaScript等文本数据的传输,展示了压缩原理、配置方法和实战效果,指出压缩能大幅缩短响应时间和资源传输,显著提升Web应用性能。

       压缩数据是一个重要的、潜在的性能加速器。图片(JPEG 和 PNG)、视频 (MPEG-4)和音乐 (MP3) 等文件都有着精心打造和非常高效的压缩标准,其中任何一个标准都可以将文件缩小一个数量级甚至更多。而HTML(包括纯文本和 HTML 标签)、CSS 和代码(如 JavaScript)等文本数据经常在不压缩的情况下进行传输。压缩这些数据可能会对可感知到的 Web 应用性能产生特别明显的影响,尤其是对速度缓慢或移动连接受限的客户端来说。

       智能内容压缩通常可以将 HTML、Javascript、CSS 和其他文本内容的带宽需求减少 30% 及以上,并相应地减少加载时间。如果使用 SSL,压缩可以减少必须进行 SSL 编码的数据量,从而抵消压缩数据所需的一些 CPU 时间。

目录

压缩原理

使用压缩过程

gzip压缩

压缩实例

指令

gzip

gzip_types

gzip_comp_level

gzip_buffers

gzip_disable

gzip_http_version

gzip_min_length

gzip_proxied

gzip_vary

gunzip压缩

指令

gunzip

gunzip_buffers

gzip_static

压缩实战效果

压缩原理

       Nginx压缩是基于HTTP协议的压缩技术,它通过在服务器端对网页内容进行压缩,以减少传输的数据量,提高网页加载速度。Nginx压缩主要支持文本内容的压缩,如HTML、CSS、JavaScript等文件。

       Nginx压缩主要通过Gzip算法来实现。该算法将文件内容分为多个小块,并对每个块进行压缩。压缩后的数据再进行传输,可以显著减少传输的数据量,提高网页加载速度。同时,浏览器端会进行相应的解压操作,将压缩后的数据还原为原始内容。

       gzip所使用的算法是开源、无专利的 LZ77(Lempel-Ziv 1977)算法的变体。该算法寻找输入数据内的重复字符串。二次出现的字符串由一个指向前一字符串的指针(以对的形式 -- 距离和长度)代替。其中,距离限定为 32 KB,长度限定为 258 字节。如果字符串没有在这前 32 KB 内出现,它就会作为文字字节序列发出(这里所说的字符串 定义为随意字节序列,并不仅限于可打印的字符)。

使用压缩过程

       浏览器-服务器压缩工作示例:

过程说明:

1、浏览器发出请求,请求头字段有”Accept-Encoding:gzip, deflate“ ,表示浏览器可支持压缩数据,压缩算法可支持gzip和deflate两种。

2、Nginx接到请求后,根据头字段”Accept-Encoding”,判断是否需要压缩。如果可压缩且算法也是Nginx所用的,就对响应(response)数据进行压缩,在返回时添加响应头字段“Content-Encoding:gzip”;否则,不压缩响应数据直接返回,也不添加头字段“Content-Encoding"。

3、浏览器收到响应后,查看是否有头字段“Content-Encoding",如果有且是支持的压缩算法,就对返回数据解压;否则,直接使用响应数据。

gzip压缩

       gzip是Nginx主要压缩算法,由ngx_http_gzip_module模块实现。

压缩实例

下面是一个压缩配置例子:

# 启用gzip压缩
gzip on;  
  
# 设置gzip压缩的级别  
gzip_comp_level 1;  

# 大于1024字节才压缩
gzip_min_length 1024;
  
# 设置gzip压缩类型
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;  
  
# 添加Vary头,告诉缓存服务器不同的浏览器可能会对同一份内容有不同的编码  
gzip_vary on;  
  
# 设置内存缓冲区大小,指定16个8KB的块作为输入和输出缓冲区  
gzip_buffers 16 8k;  
  
# 设置HTTP协议版本 
gzip_http_version 1.1;  
  
# 禁用gzip压缩对于Internet Explorer 6  
gzip_disable "MSIE [1-6]\\.";

指令

gzip

格式:gzip on|off;默认:gzip off

启用或禁用gzip压缩。此指令需要在http、server或location块中设置。

gzip_types

格式:gzip_type

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

乐享技术

每一个打赏,都是对我最大的鼓励

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值