前言

我建站没几个钱,买 1M 服务器,又贪图速度,想加载快点。之前是静动分离, BBR,CDN,webp自适应

老早看到 CDN 控制台 Gzip 旁边的 Brotli ,但是又不给用

如图,永远在升级
如图,永远在升级

无奈之下,只好各种查资料。查到的都是复制粘贴的水文,不是水文就是特别早的文章,也不怎么适用。

但大多数都是先 Git clone Brotli 的仓库,然后 git submodule update --init 升级 Brotli 。最后编译安装 Nginx 的时候添加一条编译 Brotli 的语句。

兼容性方面,感觉还是可以的,毕竟好几年前出的。

兼容性
兼容性

遇到的问题

  1. 前期 Nginx 需要编译安装(宝塔无视即可)。
  2. 国内 Git Clone 速度比较慢,可以改 DNS 跟我一样 20kb/s (海外机器无视即可)

过程

首先 Clone brotli 仓库

git clone https://github.com/google/ngx_brotli.git

进入目录

cd ngx_brotli

升级 Brotli

git submodule update --init

应该会这么提示

[root@VM-0-7-centos ngx_brotli]# git submodule update --init
Cloning into 'deps/brotli'...
remote: Enumerating objects: 8, done.
remote: Counting objects: 100% (8/8), done.
remote: Compressing objects: 100% (7/7), done.
remote: Total 6096 (delta 1), reused 2 (delta 1), pack-reused 6088
Receiving objects: 100% (6096/6096), 30.64 MiB | 24.00 KiB/s, done.
Resolving deltas: 100% (3914/3914), done.
Submodule path 'deps/brotli': checked out 'd6d98957ca8ccb1ef45922e978bb10efca0ea541'

由于我是宝塔用户,所以不需要读取编译信息。直接在 软件商店→Nginx→编译安装→添加自定义模块

添加自定义模块时,加入如下参数,其中, /www/server/ngx_brotli 是刚刚 Clone 的位置。按需替换,位置在哪都一样。然后直接开始编译安装。

--add-module=/www/server/ngx_brotli

安装完成之后。配置文件添加如下属性,然后 Nginx 重载配置生效。

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;
brotli_window 512k;

看到 content-encoding: br 就代表生效。至于效果怎么样看人。据说它的 Level 1GzipLevel 9 还要牛逼 这么编译的好处就是 BrotliGzip 可以同时运行。

Final
Final


参考:http://bbs.chenruo.net/thread-20205-1-1.html