nginx集成brotli压缩算法

这篇具有很好参考价值的文章主要介绍了nginx集成brotli压缩算法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本文于2017年2月中旬完成,发布在个人博客网站上。
考虑个人博客因某种原因无法修复,于是在博客园安家,之前发布的文章逐步搬迁过来。


Google开源Brotli压缩算法

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

在caniuse网站查询当前主流浏览器对brotli算法的支持程度,结果页面Brotli Accept-Encoding/Content-Encoding。很不幸,IE11并不支持该算法,与之相反,Chrome从49开始支持brotli算法。

安装

下载源码

从ngx_brotli下载ngx_brotli的代码。ngx_brotli编译时依赖brotli,但注意不能直接从brotli下载代码,否则编译时可能会出错。如果是手工下载代码,建议从ngx_brotli代码路径deps目录下,点击brotli的代码标签,然后取该标签的代码。

编译

./configure --prefix=/home/jackie/software/nginx \
    --with-openssl=/home/jackie/Downloads/nginx/openssl-1.0.2k \
    --with-pcre=/home/jackie/Downloads/nginx/pcre-8.38 \
    --with-zlib=/home/jackie/Downloads/nginx/zlib-1.2.8 \
    --with-http_ssl_module \
    --with-http_v2_module \ 
    --with-threads \
    --with-debug \
    --add-module=/home/jackie/Downloads/nginx/ngx_brotli-master
make install

配置说明

指令介绍

ngx_brotli定义了如下指令:

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

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

      brotli_types text/plain text/css text/xml application/xml application/json text/javascript application/javascript application/x-javascript;
    
  • brotli_static,是否允许查找预处理好的、以.br结尾的压缩文件,可选值为onoffalways,默认值为off。样例如下:

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

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

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

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

      brotli_min_length 20;
    

完整样例

http {
    ...
    gzip  on;
    gzip_vary               on;
    gzip_min_length         1024;
    gzip_buffers            128 32k;
    gzip_comp_level         6;
    gzip_http_version       1.1;
    gzip_proxied            expired no-cache no-store private auth;
    gzip_types              text/plain text/css text/xml application/xml application/json text/javascript application/javascript application/x-javascript;

    brotli on;
    brotli_types text/plain text/css text/xml application/xml application/json text/javascript application/javascript application/x-javascript;
    brotli_static off;
    brotli_comp_level 11;
    brotli_buffers 16 8k;
    brotli_window 512k;
    brotli_min_length 20;
    ...
}

经过实地验证,brotli和gzip可以共存。这是一个好消息,意味着Jackie可以在项目中使用启用brotli算法支持的nginx。
对于支持brotli算法的浏览器,比如Chrome 49之后的版本,使用开发者工具检查网络通信时,可以看到如下的HTTP响应头。文章来源地址https://www.toymoban.com/news/detail-783070.html

Content-Encoding: br

参考资料

  • RFC 7932
  • RFC 7932
  • Introducing Brotli: a new compression algorithm for the internet
  • Brotli
  • Results of experimenting with Brotli for dynamic web content
  • Web Pages Will Soon Load Even Faster in Google Chrome
  • VARNISH CACHE AND BROTLI COMPRESSION
  • Boiling Fast Internet with Brotli
  • Lossless compression with Brotli in Rust for a bit of Pied Piper on the backend
  • Brotli: A new compression algorithm for faster Internet
  • Next Generation Server Compression With Brotli
  • Static site implosion with Brotli and Gzip
  • The current state of Brotli compression

性能测试

  • Compression Benchmarks: brotli, gzip, xz, bz2
  • Brotli、Deflate、Zopfli、LZMA、LZHAM、Bzip2六种无损数据压缩性能比较
  • Comparison of Brotli, Deflate, Zopfli, LZMA, LZHAM and Bzip2 Compression Algorithms
  • Brotli与zip压缩率对比

到了这里,关于nginx集成brotli压缩算法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C++包管理工具vcpkg的使用以及集成到VS2017和CMake

    1-1 clone 代码 1-2 编译 vcpkg 1-3 添加环境变量 将 vcpkg.exe 的路径添加到环境变量 1-4 更新vcpkg 进入vcpkg目录 安装库 删除库 更新库 查询已安装的开源库 查询vcpkg包含库 导出开源库(通常在项目中使用第三方开源库时会把其拷贝到项目文件夹中使用) 3-1 全局集成 可以在任意的

    2024年02月10日
    浏览(58)
  • 含源码|基于MATLAB的去雾系统(5种去雾算法+1种本文的改进算法)

    去雾系统V2包括作者新加入的 多尺度Retinex去雾算法以及改进去雾算法 ,以及 4种 评价去雾效果的 客观指标 。 引言 去雾系统新增功能 结果分析 源码获取 展望 参考文献 在作者前面写过的文章中,已经介绍过图像去雾算法的应用价值及研究现状,并且也介绍了4种去雾算法的

    2024年01月23日
    浏览(79)
  • Nginx配置压缩和解压缩

    压缩服务器响应,或为不支持压缩的客户端解压缩它们,以提高传递速度并减少服务器开销。 压缩响应通常会显著减小传输数据的大小。但是,由于压缩发生在运行时,因此它也会增加相当大的处理开销,从而对性能产生负面影响。 NGINX 在向客户端发送响应之前执行压缩,

    2024年02月03日
    浏览(29)
  • 2017年408专业算法题

    因为要转换为中序表达式,因此使用中序遍历。在中序遍历的过程中,对于当前访问的非空结点p,则先输出\\\"(“,然后递归调用左子树,输出p的权值,递归调用右子树,输出“)”,如果p是根或者叶结点,则不需要输出“(”或”)\\\"。 408历年真题算法题解析

    2024年02月12日
    浏览(43)
  • KMP算法——通俗易懂讲好KMP算法:实例图解分析+详细代码注解 --》你的所有疑惑在本文都能得到解答

    KMP 是一个 解决模式串在文本串是否出现过 ,如果出现过,最早出现的位置的经典算法。 Knuth-Morris-Pratt 字符串查找算法,简称为 “KMP 算法”,常用于 在一个文本串 S 内查找一个模式串 P 的出现位置 ,这个算法由 Donald Knuth 、 Vaughan Pratt 、 James H. Morris 三人于 1977 年联合发表

    2024年02月07日
    浏览(50)
  • Nginx的Gzip压缩

    Nginx的Gzip压缩      Nginx开启Gzip压缩功能, 可以使网站的css、js 、xml、html 文件在传输时进行压缩,提高访问速度, 进而优化Nginx性能!在Nginx配置文件中可以配置Gzip的使用,相关指令可以在http区域 server区域、location区域配置。Nginx可以通过ngx_http_gzip_module模块、ngx_http_gzip_st

    2024年02月05日
    浏览(36)
  • nginx开启Gzip压缩,Vue性能优化之使用gzip压缩打包

    不管是vue项目还是react项目在使用webpack打包之后都会生成一个动辄一两兆甚至更大的js文件,在某些情况下严重影响项目性能,打开页面的时候白屏时间会很长,本文将介绍如何使用gzip压缩打包,主要是nginx部署的配置,非常重要,我查阅了很多文章基本都没用说清楚甚至错

    2024年02月02日
    浏览(44)
  • Nginx 常用功能(动静分离、压缩、缓存)

    Nginx是目前负载均衡技术中的主流方案,几乎绝大部分项目都会使用它,Nginx是一个轻量级的高性能HTTP反向代理服务器,同时它也是一个通用类型的代理服务器,支持绝大部分协议,如TCP、UDP、SMTP、HTTPS等。在理论上单节点的Nginx同时支持5W并发连接,而实际生产环境中,硬件

    2024年02月12日
    浏览(72)
  • Nginx中配置GZIP压缩详解

    网站访问速度对用户来说是很重要的体验,有时候除了增大带宽外,还需要对文件进行压缩。 首先找到Nginx安装路径下的配置文件: 保存后,使用nginx -t检查配置文件是否OK:         上述报错证明nginx在编译安装时候没有连同http_ssl_module模块一同编译;现在的情况是nginx已经

    2024年02月04日
    浏览(32)
  • 2023 年 7 月中旬使用各种随身 wifi 的电脑无法上网的解决方法

    230725 更新:360 已推出临时补丁来解决此问题,使用 360 Wifi 的用户无需再卸载下文所述的系统更新了。下载“360随身Wi-Fi3_解决win10-11更新异常.zip”,然后复制到随身 Wi-Fi 应用程序安装目录下。随身 Wi-Fi 应用程序的默认安装目录为: C:Program Files (x86)360AP 或者 C:Program Files

    2024年02月14日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包