Gzip大家都不陌生,但Brotli的压缩率通常还能再高15%到25%。现在主流浏览器都支持Brotli,Nginx加上这个模块后,文本类资源能省下不少带宽和CDN费用。
Nginx官方主线版不自带Brotli,需要加载Google维护的ngx_brotli动态模块。编译过的发行版一般把模块文件放在/usr/share/nginx/modules/下面,直接load_module即可。
load_module modules/ngx_http_brotli_filter_module.so;
load_module modules/ngx_http_brotli_static_module.so;
http {
brotli on;
brotli_comp_level 6;
brotli_types text/plain text/css application/javascript application/json;
# 同时保留gzip作为旧浏览器兼容
gzip on;
gzip_types text/plain text/css application/javascript application/json;
}
brotli_comp_level建议设4到6之间。级别再高,压缩时间增长明显,收益反而下降。如果静态资源不常变,可以配合brotli_static用离线预压缩,效果更好。
测试有没有生效,用curl看Content-Encoding响应头:curl -H "Accept-Encoding: br" -I https://yourdomain.com/style.css。返回br就说明Brotli在工作,gzip会作为后备。
数据来源:Google ngx_brotli GitHub仓库、Nginx官方模块加载文档
A5创业网 版权所有