在Nginx上安装Brotli提高网站加载速度

加快网站访问速度的一种方法是缓存数据,另一种有效的方法是开启数据压缩,Gzip是常见的压缩功能,今天将介绍另外一种压缩方式:由Google开发的brotli模块。Brotli最初发布于2015年,用于网络字体的离线压缩。Google软件工程师在2015年9月发布了包含通用无损数据压缩的Brotli增强版本。

其中的编码器被部分改写以提高压缩比,编码器和解码器都提高了速度,流式API已被改进,增加更多压缩质量级别。新版本还展现了跨平台的性能改进,以及减少解码所需的内存。

关于brotli与Gzip的区别请阅读:Gzip vs Brotli 压缩算法,谁更好?

在Nginx上安装Brotli并启用

nginx目前并不支持Brotli算法,需要使用第三方模块,例如ngx_brotli进行实现。

下载ngx_brotli模块及其依赖:

$ git clone https://github.com/google/ngx_brotli
$ cd ngx_brotli
$ git submodule update --init

编译Nginx时加入ngx_brotli模块:

$ cd /path/to/nginx_source/
$ ./configure --add-module=/path/to/ngx_brotli
$ make && make install

在Nginx配置文件的http块下增加以下指令:

brotli               on;  
brotli_comp_level    5;  
brotli_buffers       16 8k;  
brotli_min_length    20;
brotli_static on;
brotli_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript application/vnd.ms-fontobject application/x-font-ttf font/opentype image/svg+xml image/x-icon;

brotli_static

启用后将会检查是否存在带有br扩展的预先压缩过的文件。如果值为always,则总是使用压缩过的文件,而不判断浏览器是否支持。

brotli

是否启用在on-the-fly方式压缩文件,启用后,将会在响应时对文件进行压缩并返回。

brotli_types

指定对哪些内容编码类型进行压缩。text/html内容总是会被进行压缩。

brotli_buffers

设置缓冲的数量和大小。大小默认为一个内存页的大小,也就是4k或者8k

brotli_comp_level

设置压缩质量等级。取值范围是0到11.

brotli_window

设置窗口大小。

brotli_min_length

设置需要进行压缩的最小响应大小。


发表评论