昨天把服务器Nginx修改为宝塔集成的Nginx-Tengine,后来又开启了“http_concat_module模块”再后来一起编译了“brotli压缩”现在记录下 方便以后会用到。
之前有一篇文章写过安装 google/ngx_brotli宝塔面板LNMP开启编译Brotli压缩宝塔面板安装Brotli压缩命令,不过呢,由于 ngx_brotli 程序的发展,所以之前的教程不再适合新的 ngx_brotli 了。
本站开启Brotli压缩效果图
Brotli压缩浏览器支持情况
Chrome从版本49开始支持,但是完整的支持是在版本50(2016年5月27日开始支持)。
Firefox从版本52开始支持。
IE全版本不支持,但是Edge从版本15开始支持。
Safari全系不支持。
Opera从版本44开始支持。
支持Brotli压缩算法的浏览器使用的内容编码类型为br,例如以下是Chrome浏览器请求头里Accept-Encoding的值:
Accept-Encoding: gzip, deflate, sdch, br
如果服务端支持Brotli算法,则会返回以下的响应头:
Content-Encoding: br
需要注意的是,只有在HTTPS的情况下,浏览器才会发送br这个Accept-Encoding。
目前,网站普遍使用的是gzip压缩算法,当然你可能还知道deflate和sdch算法,但是最近两年新兴了一个新的压缩算法:Brotli,下面我将会对这个算法进行简单的介绍。
brotli压缩
Brotli是一种全新的数据格式,可以提供比Zopfli高20-26%的压缩比。据谷歌研究,Brotli压缩速度同zlib的Deflate实现大致相同,而在Canterbury语料库上的压缩密度比LZMA和bzip2略大。 链接:Google开源Brotli压缩算法 微软使用了一种基于谷歌提供的C代码的实现,向.NET Core 2.1添加了Brotli压缩支持。由于Brotli得到了许多Web浏览器和Web服务器的广泛支持,所以.NET Core提供对这项技术的支持是非常有用的。
什么是 Brotli 压缩算法
Brotli最初发布于2015年,用于网络字体的离线压缩。Google软件工程师在2015年9月发布了包含通用无损数据压缩的Brotli增强版本,特别侧重于HTTP压缩。其中的编码器被部分改写以提高压缩比,编码器和解码器都提高了速度,流式API已被改进,增加更多压缩质量级别。新版本还展现了跨平台的性能改进,以及减少解码所需的内存。
与常见的通用压缩算法不同,Brotli使用一个预定义的120千字节字典。该字典包含超过13000个常用单词、短语和其他子字符串,这些来自一个文本和HTML文档的大型语料库。预定义的算法可以提升较小文件的压缩密度。
使用brotli替换deflate来对文本文件压缩通常可以增加20%的压缩密度,而压缩与解压缩速度则大致不变。使用Brotli进行流压缩的内容编码类型已被提议使用“br”。
安装Brotli压缩
例如,我们将 google/ngx_brotli 下载并解压到 /tmp/ngx_brotli 目录。
cd /www/server/nginx/src //进去宝塔面板nginx安装目录 git clone https://github.com/google/ngx_brotli //下载ngx_brotli到安装目录 cd /www/server/nginx/src/ngx_brotli //进去ngx_brotli目录 git submodule update --init //更新brotli cd /www/server/nginx/src //返回宝塔面板nginx安装目录 ./configure --user=www --group=www --prefix=/www/server/nginx ... --add-module=/www/server/nginx/src/ngx_brotli //#生成Makefile,./configure后面的参数直接复制原来的(使用nginx -V命令获取),然后在后面额外加一个--add-module=/www/server/nginx/src/ngx_brotli make && make install //编译nginx
不出意外就可以安装成功了,
开启Brotli 压缩
编辑 nginx.conf 文件,在http配置段增加以下配置,然后重启即可
brotli on; brotli_comp_level 1; brotli_buffers 16 8k; brotli_min_length 20; 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;
如果,nginx 反代的程序也启了 gzip 压缩,就要设置 反代禁用 gizp
反代代码中添加:
proxy_set_header Accept-Encoding "";
官方QQ群号码:922069959