Lnmp开启ngx_brotli

2019年1月31日 0 条评论 354 次阅读

在2014年9月, Google就已经在官方博客上发布了新的压缩算法Brotli, 并开源在了Github上.

 

同时还发布了一个研究报告, 対Brotli, Deflate, Zopfli, LZMA, LZHAM和Bzip2这几种压缩算法进行了细致的对比. 从中我们可以知道Brotli的特性大概有这样几点:

 

  • 对于典型的Web资源(html,css,js等), Brotli比Gzip性能好17–25%
  • Brotli -1有着与Gzip -9相近的压缩比和更快的压缩解压速度
  • 多语言HTML文件压缩率有25%的提升
  • (在对Alexa排名前一万个网站的测试中)JS/MinJS/CSS文件压缩率分别有17% 17%和20%的提升
  • 有效降低移动端浏览器加载网页耗费的数据流量和电量

 

经过大约半年的开发, 现在Chrome 49和Firefox 44以上的版本已经可以体验到这项新算法了.
不过在Chrome 49稳定版中Brotli默认没有启用, 需要到chrome://flags#enable-brotli中手动启用, 启用后可以在请求头的Accept-encoding字段中看到br字样. 服务端也支持Brotli压缩算法的话就能在响应头中看到

Content-Encoding: br.

在我所知道的站点中, 当前只有极少数启用了対Brotli的支持. 其中一个是Google Fonts API, 另一个是CloudFlare的HTTP2实验站点.
值得庆幸的是, CloudFlare和Google都提供了Brotli的Nginx模块. 我们可以自行编译来加入对Brotli的支持. 整个过程和配置其他模块没有太大的区别, 这里就简要地记录一下.

例如,我们将 google/ngx_brotli 下载并解压到 /tmp/ngx_brotli 目录。

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

然后再下载 google/brotli 并解压到 /tmp/ngx_brotli/deps/brotli

cd ngx_brotli/deps/brotli
git clone git@github.com:google/brotli.git

修改lnmp.conf文件加入 --add-module=/tmp/ngx_brotli 参数。

cd lnmp1.6
vim lnmp.conf
Nginx_Modules_Options='--add-module=/tmp/ngx_brotli'

然后直接运行./upgrade.sh

./upgrade.sh nginx

输入版本号,我这里输入的是1.15.8

直接运行这一步应该会报错

但是也给出了解决办法

cd /tmp/ngx_brotli && git submodule update --init && cd /root/lnmp1.6/src/nginx-1.15.8

运行以上命令,重新运行./upgrade.sh nginx即可

# 修改配置文件, 参数和Gzip大致相同
brotli on;
brotli_static off;
brotli_types application/atom+xml application/javascript application/json application/ld+json application/manifest+json application/rss+xml application/vnd.geo+json application/vnd.ms-fontobject application/x-font-ttf application/x-web-app-manifest+json application/xhtml+xml application/xml font/opentype image/bmp image/svg+xml image/x-icon text/cache-manifest text/javascript text/css text/plain text/vcard text/vnd.rim.location.xloc text/vtt text/x-component text/x-cross-domain-policy;
brotli_buffers 4 16k;
brotli_comp_level 6;
brotli_window 512k;
brotli_min_length 512;

参考链接:ngx_brotli 已经不再需要编译依赖,附最新教程

文章评论(0)