Google在2015年9月推出了革命性的无损压缩算法Brotli。Brotli通过结合变种的LZ77算法、Huffman编码以及二阶文本建模等先进技术进行数据压缩,相比传统的Gzip,效率提升了惊人的17-25%。意味着更快的页面加载速度,更低的带宽使用,以及更好的用户体验。
作为站长或开发者,如何在自己的网站中实现这一强大的压缩技术呢?网上流传的相关教程很多已经过时。我整理了一篇最新的实测笔记,详细记录了如何在宝塔面板下的 Nginx 中开启 Brotli 压缩,希望能为你提供一个清晰、可靠的操作指南(笔记实测与2024年9月29日)。让您的网站速度飞起来!CentOS7安装新版内核和开启BBR加速教程。
1.安装libbrotli
cd /www/server
git clone https://github.com/bagder/libbrotli
cd libbrotli
./autogen.sh
./configure
make && make install
以上命令最好不要在全新系统执行,可先使用宝塔面板安装nginx套件环境之后,卸载nginx之后再执行,可以避免一些不必要的麻烦。
2.下载ngx_brotli模块及其依赖:
cd /www/server
#下载brotli
git clone https://github.com/google/ngx_brotli.git
cd ngx_brotli
#更新brotli
git submodule update --init
安装时同时升级了nginx版本为1.25(两个小时后又升级成了1.26…),发现反复程序以下错误,折腾了很久,生命又成功被没意义的事浪费一天。(并非所有的系统安装nginx1.25以上都会遇到这个问题,opencloudos9可以正常按以上步骤安装,centos7报错)
如果遇到以上错误,仅需在ngx_brotli文件夹下执行以下命令,将brotli回退到1.0.9.x旧版本。
wget https://ghproxy.com/https://github.com/google/brotli/archive/refs/tags/v1.0.9.tar.gz
tar -xzf v1.0.9.tar.gz
mv brotli-1.0.9/* deps/brotli
BT论坛搜索的命令是mv brotli-1.0.9 deps/brotli/
这会直接整个1.0.9文件夹移动到brotli文件夹下,显然是不对的,但一般又很难发现,所以又要经历好多磨难。哎,到处都是坑。
3.修改 nginx.sh
先查看目前的Nginx版本信息,使用命令:nginx -V
在/www/server/panel/install/nginx.sh
找到./configure
后面添加--add-module=/www/server/ngx_brotli
4.编译安装Nginx
回到xshell或者 宝塔shh终端 使用命令开始编译,根据自己的版本,将后面数字改为1.26、1.24、openresty等
方法一:命令行安装
sh /www/server/panel/install/nginx.sh install 1.26
方法二:宝塔面板安装
1、进入软件列表,选择nginx→添加模块
2、选中添加的模块,选择编译安装,等待安装完成。
5.安装好了使用nginx -V查看是否含有模块即可。
6.开启Brotli压缩
点击面板Nginx设置–配置修改,在http段内添加以下内容来启用Brotli压缩。
Brotli参数详解:
brotli on; #启用
brotli_comp_level 6; #压缩等级,默认6,最高11,太高的压缩水平可能需要更多的CPU
brotli_buffers 16 8k; #请求缓冲区的数量和大小
brotli_min_length 20; #指定压缩数据的最小长度,只有大于或等于最小长度才会对其压缩。这里指定20字节
brotli_types text/plain application/javascript application/x-javascript text/javascript text/css application/xml text/html application/json image/svg application/font-woff application/vnd.ms-fontobject application/vnd.apple.mpegurl image/x-icon image/jpeg image/gif image/png image/bmp; #指定允许进行压缩类型
brotli_static always; #是否允许查找预处理好的、以.br结尾的压缩文件,可选值为on、off、always
brotli_window 512k; #窗口值,默认值为512k
结束语
压缩效果还不错,优化强迫症患者尤其值得一试。Brotli和Gzip默认共存,并且都启用了,部分老旧的浏览器不支持Brotli的时候会自动变成Gzip压缩。