乐趣区

Nginx配置Brotli压缩

在 web 应用中,为了节省流量,降低传输数据大小,提高传输效率,常用的压缩方式一般都是 gzip,今天我们来介绍另外一种更高效的压缩方式 brotli。Brotli 是基于 LZ77 算法的一个现代变体、霍夫曼编码和二阶上下文建模。Google 软件工程师在 2015 年 9 月发布了包含通用无损数据压缩的 Brotli 增强版本,特别侧重于 HTTP 压缩。其中的编码器被部分改写以提高压缩比,编码器和解码器都提高了速度,流式 API 已被改进,增加更多压缩质量级别。与常见的通用压缩算法不同,Brotli 使用一个预定义的 120 千字节字典。该字典包含超过 13000 个常用单词、短语和其他子字符串,这些来自一个文本和 HTML 文档的大型语料库。预定义的算法可以提升较小文件的压缩密度。使用 Brotli 替换 Deflate(gzip)来对文本文件压缩通常可以增加 20% 的压缩密度,而压缩与解压缩速度则大致不变。
浏览器支持情况

Mozilla Firefox 在 Firefox 44 中实现 Brotli。
Google Chrome 从 Chrome 49 开始支持 Brotli。
Opera 从 Opera 36 开始支持 Brotli。

以 centos 为例,配置 Nginx 使其支持 brotli 压缩
1、安装依赖
> yum groupinstall ‘Development Tools’
2、安装 libbrotli
cd /usr/local/src/
git clone https://github.com/bagder/libbrotli
cd libbrotli
./autogen.sh
./configure
make && make install
3、安装 ngx_brotli
> cd /usr/local/src/
> git clone https://github.com/google/ngx_brotli
> cd ngx_brotli && git submodule update –init
4、下载 Nginx
> cd /usr/local/src
> wget http://nginx.org/download/nginx-1.10.3.tar.gz
> tar -xvzf nginx-1.10.3.tar.gz
5、编译安装
> cd /usr/local/src/nginx-1.10.3
> ./configure –add-module=/usr/local/src/ngx_brotli

> make

# 如果是首次安装 Nginx,执行 make install;如果是升级,执行 make upgrade
> make install
6、查看是否安装正常
> nginx -V
> nginx -t
7、配置 brotli 在 nginx.conf 文件的 http 模块下新增以下内容
#Brotli Compression
brotli on;
brotli_comp_level 6;
brotli_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript image/svg+xml;
8、检查是否生效打开网页,用 chrome 开发者工具调试,在 Network 一栏会发现有 content-encoding:br,同时网络耗时也会明显减少。

欢迎订阅「K 叔区块链」– 专注于区块链技术学习 博客地址:http://www.jouypub.com 简书主页:https://www.jianshu.com/u/756c9c8ae984segmentfault 主页:https://segmentfault.com/blog/jouypub 腾讯云主页:https://cloud.tencent.com/developer/column/72548

退出移动版