
【蚂蚁网络】宝塔面板Nginx开启Gzip压缩,提升网站访问速度
现在绝大多数的网站程序都在使用Nginx环境,Nginx环境的优化技术显得尤为重要。其中就有一项Nginx的Gzip压缩优化。
Gzip在网络传输中的核心角色(HTTP Gzip Compression)
目标:在发送方(服务器)和接收方(浏览器/客户端)之间传输文本内容时,显著缩小需要传输的数据体积。
一个合理的优化参数,能够最大性能的发挥出Gzip的效果。可以使的我们常见的HTML、CSS、JS、JSON、XML等通常包含大量空格、换行符、重复的关键词(如 function
, <div>
, class
等)和重复的属性。Gzip 的 LZ77 算法非常擅长找出并压缩这些重复模式。霍夫曼编码则进一步优化了这些标记的二进制表示。压缩效果通常能达到:
- HTML:缩小 50% - 80%
- CSS/JS:缩小 60% - 90%
- 文本/JSON:效果类似,取决于重复度。
目前宝塔面板部署的Nginx基本都自带默认开启了gzip功能,我们可以修改Nginx的配置文件来调整默认的gzip参数。
可以看到默认的配置是已经开启了gzip功能,可以看到默认的压缩级别(gzip_comp_level)只有2级,这里我们是可以调整为6级压缩级别。
压缩级别范围为:1 (压缩速度最快,压缩比最低) 到 9 (压缩速度最慢,压缩比最高)。
这里我们选择级别 6 的原因:
平衡点:压缩级别 6 是官方和社区广泛推荐的起点。它在压缩比和CPU消耗之间取得了非常好的平衡点。
边际效应递减:从级别 6 提升到压缩级别 9 的话,压缩比的提升通常非常有限(可能只有百分之几),但CPU消耗会显著增加。对于大多网站来说,级别 6 的压缩效果已经非常好了。
动态内容:如果你的网站有大量动态生成的内容(如 PHP/Python/Ruby 应用),使用过高的压缩级别会给服务器 CPU 带来不必要的压力,影响响应速度。级别 6 是更安全的选择。
静态内容: 对于纯静态文件(HTML, CSS, JS),如果服务器资源充足,可以尝试提高到 7
或 8
,但需要监控 CPU 负载。级别 9
通常不推荐,因为收益太小而代价太大。
其他默认的配置已经足以满足绝大多数的网站需求了,所以我们只需要修改压缩级别就可以进行保存了,保存后记得重启Nginx服务来启用最新的gzip参数。
蚂蚁网络还贴心为大家附带了一份参数的注释表,有需要的可以根据注释表进行修改调整适合自己网站的gzip优化参数。
gzip on
作用:这是最基础的开关,启用Gzip压缩功能。
gzip_min_length
作用:设置触发压缩的最小文件大小(单位:字节)。小于此值的文件不会被压缩。
推荐值:1024(1KB)或 Nginx 默认值 20。
gzip_buffers
作用:用于设置gzip压缩数据的内存缓冲区。(gzip_buffers 4 16k)的含义是分配的缓冲区数量为 4 个,每个缓冲区的大小为16千字节(16,384字节)
gzip_http_version
作用:这是指定启用 Gzip 压缩的最低 HTTP 协议版本的参数。规定只有使用指定 HTTP 版本或更高版本协议的客户端请求,Nginx 才会启用 Gzip 压缩来响应。
gzip_comp_level
作用:设置gzip功能的压缩数据级别,1 (压缩速度最快,压缩比最低) 到 9 (压缩速度最慢,压缩比最高)。
gzip_types
作用:明确指定哪些 MIME 类型的响应应该被压缩。