阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Nginx启用Brotli 压缩,降低页面大小提高网站加载速度

189次阅读
没有评论

共计 1471 个字符,预计需要花费 4 分钟才能阅读完成。




Google 认为互联网用户的时间是宝贵的,他们的时间不应该消耗在漫长的网页加载中,因此在 2015 年 9 月 Google 推出了无损压缩算法 Brotli。Brotli 通过变种的 LZ77 算法、Huffman 编码以及二阶文本建模等方式进行数据压缩,与其他压缩算法相比,它有着更高的压缩效率。

Brotli 主要特点

  • 针对常见的 Web 资源内容,Brotli 的性能相比 Gzip 提高了 17-25%;
  • 当 Brotli 压缩级别为 1 时,压缩率比 Gzip 压缩等级为 9(最高)时还要高;
  • 在处理不同 HTML 文档时,Brotli 依然能够提供非常高的压缩率。

Nginx 编译安装 ngx_brotli 模块

Nginx 默认不支持 ngx_brotli 模块,需要自行编译,编译方法如下

# 先下载 brotli
git clone https://github.com/google/ngx_brotli.git
#进入目录
cd ngx_brotli
#更新 brotli
git submodule update --init
#进入 nginx 源码目录
cd xxx/nginx
#生成 makefile,注意根据自己使用的模块添加
./configure  ...  --add-module=../ngx_brotli
#编译 nginx
make && make install

如果编译不出错的情况下,输入 nginx -V 就可以看到 ngx_brotli 模块了,如下截图。

启用 ngx_brotli 支持

修改 nginx.confhttp段内添加以下内容来启用 Brotli 压缩

# 开启 Brotli 压缩
brotli on;
#压缩等级,0 到 11,默认值是 6,过大会额外消耗服务器 CPU
brotli_comp_level 6;
#设置需要进行压缩的最小响应大小,单位为字节
brotli_min_length   512;
#指定哪些 MIME 类型进行压缩
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;
#是否允许查找预处理好的、以 .br 结尾的压缩文件。可选值为 on、off、always
brotli_static       always;

最后别忘记重载 Nginx 使其生效nginx -s restart

其它说明

支持 Brotli 压缩算法的浏览器使用的内容编码类型为 br,例如以下是 Chrome 浏览器请求头里 Accept-Encoding 的值(只有在 HTTPS 的情况下,浏览器才会发送 br 这个 Accept-Encoding):

Accept-Encoding: gzip, deflate, sdch, br

如果服务端支持 Brotli 算法,则会返回以下的响应头:

Content-Encoding: br

Brotli 和 Gzip 可以共存,因此建议 2 个压缩都启用,当部分老旧的浏览器并不支持 Brotli 的情况下自动降级为 Gzip 来处理。

此文参考内容

正文完
星哥说事-微信公众号
post-qrcode
 
星锅
版权声明:本站原创文章,由 星锅 2022-01-22发表,共计1471字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中