小知识:为Nginx启用Brotli压缩算法的方法示例

Brotli是一种全新的数据格式,可以提供比Zopfli高20-26%的压缩比。

什么是 Brotli 压缩算法

Brotli最初发布于2015年,用于网络字体的离线压缩。Google软件工程师在2015年9月发布了包含通用无损数据压缩的Brotli增强版本,特别侧重于HTTP压缩。其中的编码器被部分改写以提高压缩比,编码器和解码器都提高了速度,流式API已被改进,增加更多压缩质量级别。新版本还展现了跨平台的性能改进,以及减少解码所需的内存。

与常见的通用压缩算法不同,Brotli使用一个预定义的120千字节字典。该字典包含超过13000个常用单词、短语和其他子字符串,这些来自一个文本和HTML文档的大型语料库。预定义的算法可以提升较小文件的压缩密度。

使用brotli替换deflate来对文本文件压缩通常可以增加20%的压缩密度,而压缩与解压缩速度则大致不变。使用Brotli进行流压缩的内容编码类型已被提议使用“br”。

安装

1.下载 brotli

?
1
2
git clone https://github.com/google/ngx_brotli
cd ngx_brotli && git submodule update –init

2.编译

在原有的编译配置后增加 –add-module=/opt/nginx/ngx_brotli

例如

复制代码 代码如下:
./configure –prefix=/usr/local/nginx –user=www –group=www –with-pcre=/opt/nginx/pcre-8.41 –with-http_ssl_module –with-zlib=/opt/nginx/zlib-1.2.11 –with-openssl=/opt/nginx/openssl-1.0.2n –add-module=/opt/nginx/ngx_brotli –with-http_v2_module

配置,在 http 段加入

?
1
2
3
4
5
6
7
8
9
10
11
12
http {
include    mime.types;
default_type application/octet-stream;
sendfile    on;
tcp_nopush   on;
keepalive_timeout 65;
#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;
……

重启,刷新页面查看 header,发现有

?
1
accept-encoding:gzip, deflate, br

如图所示

%小知识:为Nginx启用Brotli压缩算法的方法示例-猿站网-插图

即表示开启了 brotli 压缩

配置说明

指令介绍

ngx_brotli定义了如下指令:

brotli,是否允许动态压缩响应数据,可选值为on和off,默认值为off。样例如下:

?
1
brotli on;

brotli_types,动态压缩启用时,允许压缩的MIME types,默认值为text/html。样例如下:

?
1
brotli_types text/plain text/css text/xml application/xml application/json text/javascript application/javascript application/x-javascript;

brotli_static,是否允许查找预处理好的、以.br结尾的压缩文件,可选值为on、off和always,默认值为off。样例如下:

?
1
brotli_static off;

brotli_comp_level,压缩级别,可选值范围为0~11,默认值为6。样例如下:

?
1
brotli_comp_level 11;

brotli_buffers,压缩响应数据时使用的缓冲区的数量和大小。样例如下:

?
1
brotli_buffers 16 8k;

brotli_window,brotli使用的窗口值,默认值为512k。样例如下:

?
1
brotli_window 512k;

brotli_min_length,响应数据的最小长度,低于该值将不使用brotli算法执行压缩操作。brotli算法使用Content-Length来确定响应数据的长度。样例如下:

?
1
brotli_min_length 20;

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。

原文链接:https://awen.me/post/50337.html

声明: 猿站网有关资源均来自网络搜集与网友提供,任何涉及商业盈利目的的均不得使用,否则产生的一切后果将由您自己承担! 本平台资源仅供个人学习交流、测试使用 所有内容请在下载后24小时内删除,制止非法恶意传播,不对任何下载或转载者造成的危害负任何法律责任!也请大家支持、购置正版! 。本站一律禁止以任何方式发布或转载任何违法的相关信息访客发现请向站长举报,会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。本网站的资源部分来源于网络,如有侵权烦请发送邮件至:2697268773@qq.com进行处理。
建站知识

小知识:负载均衡的基本知识以及使用nginx进行负载均衡的简单例子

2023-4-11 1:32:42

建站知识

小知识:使用nginx模拟进行蓝绿部署的方式

2023-4-11 1:51:25

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索