加快网站访问速度的一种方法是缓存数据,另一种有效的方法是开启数据压缩,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
设置需要进行压缩的最小响应大小。
原文地址:https://www.zhanzhangb.com/1803.html