Brotli介绍

Brotli是Google推出的开源压缩算法,通过变种的LZ77算法、Huffman编码以及二阶文本建模等方式进行数据压缩,与其他压缩算法相比,它有着更高的压缩效率,性能也比我们目前常见的Gzip高17-25%,可以帮我们更高效的压缩网页中的各类文件大小及脚本,从而提高加载速度,提升网页浏览体验。

Brotli.png

Brotli 凭借它优异的性能迅速占领了市场,对主流浏览器都有广泛的支持Brotli算法。各大CDN厂商也推出了Brotli,可以看出Brotli有多么火热。在考虑资源占用和流量或访问速度等各方面因素,建议启用。钧言极客已经支持Brotli算法,对访问速度有一定的提升。

Brotli安装

这里使用宝塔管理面板来安装。操作环境 Centos 7.6 其他环境也可以借鉴

下载Brotli

PLAINTEXT
cd /www/server    ##进入宝塔环境目录
git clone https://github.com/google/ngx_brotli.git    ##下载brotli
cd ngx_brotli
git submodule update --init    ##更新brotli
点击展开查看更多

编译安装Nginx

这里我使用tengine 2.3.1版本

1、 创建一个编译目录

PLAINTEXT
mkdir -p /work
cd /work
点击展开查看更多

2、 下载并解压tengine

PLAINTEXT
cd /work  #如果你在work目录下,此命令省略
wget http://tengine.taobao.org/download/tengine-2.3.1.tar.gz
tar -xzvf tengine-2.3.1.tar.gz
点击展开查看更多

3、 查看宝塔Linux面板原先的Tengine的编译参数

PLAINTEXT
nginx -V
点击展开查看更多

查询的tenginx编译参数 并把configure arguments:之后的参数复制下来

PLAINTEXT
Tengine version: Tengine/2.3.1
nginx version: nginx/1.16.0
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-36) (GCC)
built with OpenSSL 1.1.1b  26 Feb 2019
TLS SNI support enabled
configure arguments: --user=www --group=www --prefix=/www/server/nginx --add-module=/www/server/nginx/src/ngx_devel_kit --with-openssl=/www/server/nginx/src/openssl --add-module=/www/server/nginx/src/ngx_cache_purge --add-module=/www/server/nginx/src/nginx-sticky-module --add-module=/www/server/nginx/src/lua_nginx_module --with-http_stub_status_module --with-http_ssl_module --with-http_v2_module --with-http_image_filter_module --with-http_gzip_static_module --with-http_gunzip_module --with-ipv6--with-http_sub_module --with-http_flv_module --with-http_addition_module --with-http_realip_module--with-http_mp4_module --with-ld-opt=-Wl,-E --with-pcre --with-cc-opt=-Wno-error --add-module=/www/server/nginx/src/ngx-pagespeed --add-module=/work/nginx-plugin-master
点击展开查看更多

4、 进入Tengine解压目录,重新编译Tengine。

PLAINTEXT
cd /work/tengine-2.3.1
./configure 粘贴上一步复制的参数 --add-module=/www/server/ngx_brotli
make
点击展开查看更多

编译过程有点慢,耐心等一下。

5、 备份原来的Tengine文件,把编译后的Tengine文件替换掉旧的Tengine

PLAINTEXT
cd /www/server/nginx/sbin
cp nginx nginx.bak
service nginx stop
rm -rf /www/server/nginx/sbin/nginx
cd /work/tengine-2.3.1
cp objs/nginx /www/server/nginx/sbin
service nginx start
点击展开查看更多

6、 检查是否编译成功

PLAINTEXT
nginx -V
点击展开查看更多

Brotli.png

这样就算编译成功了。

开启Brotli压缩

在宝塔面板点击左侧软件商店 - Nginx设置 - 配置修改,在http段内添加以下内容启用Brotli压缩。

PLAINTEXT
brotli on;
brotli_comp_level 6;
brotli_min_length 512;
brotli_types text/plain text/javascript text/css text/xml text/x-component application/javascript application/x-javascript application/xml application/json application/xhtml+xml application/rss+xml application/atom+xml application/x-font-ttf application/vnd.ms-fontobject image/svg+xml image/x-icon font/opentype;
brotli_static always;
点击展开查看更多

最后保存一下文件,然后重载配置或者重启一下nginx就可以了

参数说明

PLAINTEXT
brotli on;               #启用
brotli_comp_level 6;     #压缩等级,默认6,最高11,太高的压缩水平可能需要更多的CPU
brotli_buffers 16 8k;    #请求缓冲区的数量和大小
brotli_min_length 20;    #指定压缩数据的最小长度,只有大于或等于最小长度才会对其压缩。这里指定20字节
brotli_types text/plain; #指定允许进行压缩类型
brotli_static always;    #是否允许查找预处理好的、以.br结尾的压缩文件,可选值为on、off、always
brotli_window 512k;      #窗口值,默认值为512k
点击展开查看更多

浏览器测试

Brotli.png

PS: brotli只会在https状态下才会生效,http状态会使用Gzip

版权声明

作者: JunYan`Blog

链接: https://www.jinjun.top/posts/54b2/

许可证: CC BY-NC-SA 4.0

This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. Please attribute the source, use non-commercially, and maintain the same license.

评论

开始搜索

输入关键词搜索文章内容

↑↓
ESC
⌘K 快捷键