前言
我建站没几个钱,买 1M
服务器,又贪图速度,想加载快点。之前是静动分离, BBR,CDN,webp自适应
。
老早看到 CDN
控制台 Gzip
旁边的 Brotli
,但是又不给用 :%(酷安_tiebaemotion76)
无奈之下,只好各种查资料。查到的都是复制粘贴的水文,不是水文就是特别早的文章,也不怎么适用。
但大多数都是先 Git clone Brotli
的仓库,然后 git submodule update --init
升级 Brotli
。最后编译安装 Nginx
的时候添加一条编译 Brotli
的语句。
兼容性方面,感觉还是可以的,毕竟好几年前出的。
遇到的问题
- 前期
Nginx
需要编译安装(宝塔无视即可)。 - 国内
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 1
比 Gzip
的 Level 9
还要牛逼 :%(酷安_emotion1018) 这么编译的好处就是 Brotli
和 Gzip
可以同时运行。