使用Brotli提高网站访问速度

news/2024/4/29 7:55:25/文章来源:https://blog.csdn.net/weixin_34019929/article/details/89050328

使用Brotli提高网站访问速度

在优化网站打开速度上,我们有很多的方法,而其中一个就是减少诸如Javascript和CSS等资源文件的大小,而减少文件大小的方法除了在代码上下功夫外,最常用的方法就是使用压缩算法对文件进行压缩。

目前,网站普遍使用的是gzip压缩算法,当然你可能还知道deflatesdch算法,但是最近两年新兴了一个新的压缩算法:Brotli,下面我将会对这个算法进行简单的介绍。

什么是Brotli

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

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

使用brotli取代deflate来对文本文件压缩通常可以增加20%的压缩密度,而压缩与解压缩速度则大致不变。

浏览器支持情况

图片描述

  • 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。

关于性能

下面是LinkedIn做的一个性能测试结果:

enter image description here

AlgorithmQualityCompression Time (ms)Decompression Time (ms)
gzip616935
gzip928427
zopfli1537,84732
zopfli100194,46038
zopfli10001,855,48029
brotli410924
brotli519320
brotli551723
brotli1111,91322

可以看到,Brotli的压缩率更高,意味着通过Brotli算法压缩的文件,文件大小更小,但是由表格可以看到,Brotli的压缩时间比gzip要多,而解压时间则相当。所以在运行中(on-the-fly)使用Brotli算法压缩文件可能并不是一个很好的方案,下面我们再探讨下。

更多的评测可以看以下两个链接:

使用Brotli

Brotli有更高的压缩率,但是同时也需要更长的压缩时间,所以在请求的时候实时进行压缩并不是一个很好的实践(当然你可以这么做)。我们可以预先对静态文件进行压缩,然后直接提供给客户端,这样我们就避免了Brotli压缩效率低的问题,同时使用这个方式,我们可以使用压缩质量最高的等级去压缩文件,最大程度的去减小文件的大小。

另外,由于不是所有浏览器都支持Brotli算法,所以在服务端,我们需要同时提供两种文件,一个是经过Brotli压缩的文件,一个是原始文件,在浏览器不支持Brotli的情况下,我们可以使用gzip去压缩原始文件提供给客户端。

具体的实现可以参照下Linkin的这篇文章:https://engineering.linkedin....。

在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    6;  
brotli_buffers       16 8k;  
brotli_min_length    20;  
brotli_types         *;

以上是on-the-fly的配置方式,如果是要响应已经使用Brotli压缩过的文件,则使用brotli_static指令。下面是ngx_brotli模块相关指令的一些简单解析。

模块指令解析

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://github.com/google/ngx...

参考

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_826879.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网站字体渲染过程

前言 我们知道同一种字体在不同浏览器上的表现有可能是不同的,除了浏览器,还有哪些导致表现不同的因素呢?不同系统下字形的渲染也是不一样的,根本原因是什么呢?我们希望各浏览器下字体排版一致,实现的话有完…

如何提升网站权重

2019独角兽企业重金招聘Python工程师标准>>> 如何提升网站权重 1、 在权重高的论坛发帖 就是在高权重的论坛里面发帖,发帖的时分要在帖子中参加关键词和链接地址,当你的帖子发送胜利后,由于你发布的论坛权重很高。所以会直接影响到…

技术网站 -- centos

2019独角兽企业重金招聘Python工程师标准>>> centos中文站 http://www.centoscn.com/ 转载于:https://my.oschina.net/u/2312022/blog/648410

Burpsuite1.7.03网站渗透神器最新破解版

众所周知,Burp Suite是响当当的web应用程序渗透测试集成平台。从应用程序攻击表面的最初映射和分析, 到寻找和利用安全漏洞等过程,所有工具为支持整体测试程序而无缝地在一起工作。 平台中所有工具共享同一robust框架,以便统一处理…

秦时明月主题 html静态网站 全套源码资源

这是我上学期写的一个静态的html网站。 细节方面没深入写,只是写了一个表面的网站,适合萌新练习。 展示如下: 下载地址:https://download.csdn.net/download/k_koris/10714671

织梦网站上传到服务器(与网上常见方法不同)

最近需要将通过织梦写的网站上传到服务器,试了许多网上的方法都不太适合我,经过一番尝试,用自己的方法解决了这个问题,特此记录。另外,我的本地织梦是利用xampp搭建的,服务器是linux,使用window…

OpenCms创建网站过程图解——献给OpenCms的初学者们

很多人都听说了OpenCms,知道了它的强大,索性的下载安装了,终于见到了久违OpenCms,看到了它简洁的界面,欣喜过后却不免一脸茫然,这个东西怎么用,我怎么用它来建站,从哪开始&#xff0…

Win7如何安装IIS来浏览ASP网站

1 进入控制面板-->程序与功能-->点击左侧的"打开或关闭Windows功能"-->把"Internet信息服务"给勾上,点击"确定"后开始安装.(注意只要框子显示为蓝色即可,无法显示勾子)2 还是在"打开或关闭Windows功能"里面,再次安装IIS功能,…

ASP.NET Core 一步步搭建个人网站(4)_主页和登录验证

上章节我们已经定制好动态配置的菜单,用户登录网站的第一步就是进入首页内容,那我们先搭建一下我们的首页内容。想着自己的网站内容主要是个人博客类型,所以,首页就展示博主本人的一些基本信息吧,哈哈。当然&#xff0…

如何利用新媒体平台,优化个人网站!

现阶段你如果和一些新入行的营销人员谈论SEO,他们可能并不了解,虽然SEO有着悠久的历史,但当你与他们谈论新媒体的时候,几乎每个人都会有独到的见解。 随着新媒体的不断崛起与影响力的不断攀升,很多人都在唱衰SEO&#…

支持全球探测点的新一代网站监控

摘要: 当你的网站开发完成了,你是不是想知道全国各地到服务器的网络访问情况。 当你的网站上线了,你是不是不想变成熊猫眼24小时盯着网站运行情况。 当你的网站商业化了,你是不是想对竞争对手的应用也做做监测,看看谁更…

搭建开放式与认证式个人网站

搭建开放式与认证式个人网站 (一).设置个人用户主页 开启个人用户主页功能; 【vim /etc/httpd/conf.d/userdir.conf】 编辑/etc/httpd/conf.d/userdir.conf文件,在第17行的UserDir disabled参数前面加上井号&#xff…

DNS设置错误,浏览器能够正常访问网站么?

大家在看到这个问题,第一反应是不是都认为:不能? 嘿嘿,我料定大家的正常思路也该是这样。 起初我也认为应该是这样但是前段时间遇到一件事让我改变了这个固有观念: 前段时间机房的dhcp服务关闭,我们不得已开…

css点击后变颜色_Web 性能优化:21 种优化 CSS 和加快网站速度的方法

这是 Web 性能优化的第 4 篇,上一篇在下面看点击查看:Web 性能优化:使用 Webpack 分离数据的正确方法Web 性能优化:图片优化让网站大小减少 62%Web 性能优化:缓存 React 事件来提高性能CSS 必须通过一个相对复杂的管道…

外链发布,如何一箭双雕,而非仅仅为了SEO?

目前,我们不可否认的是社交媒体对SEO的影响,特别是新媒体平台,很多比较成熟的公司都会在原有的SEO部门增加新媒体部,这就意味着,基础性的营销推广,不单单存在于SEO,以往通过SEO获取大量流量的操…

记录 OpenGL 学习网站

LearnOpenGL CNhttp://learnopengl.com 系列教程的简体中文翻译https://learnopengl-cn.github.io/http://learnopengl.com 系列教程的简体中文翻译https://learnopengl-cn.github.io/ OpenGL入门(一)-- 图形API简介与作用 - 简书由于第一次的文章排版有…

如何处理 网站被网安大队下发的信息系统安全等级保护限期整改通知书

2018年6月,我们接到一位来自北京的新客户反映,说是他们单位收到一封来自北京市公安局海淀分局网安大队的通知书,通知称:贵单位网站存在网络安全漏洞,网站被植入后门程序,要求你单位要在XX日之前,对网站进行…

社交媒体(social media)网站设计尺寸参考(转)

社交媒体网站,这里主要指的是国外的几大网站,比如说:Facebook、Twitter、Google、LinkedIN、Pinterest、Instagram和Youtube七个。今天不说别的,主要将其设计图尺寸发于大家参考,希望这这几张图对设计人员有所帮助。 社…

网站快照被劫持 标题描述被篡改成博彩内容的解决方法

三年前用dedecms织梦系统,帮公司设计了一个网站,平常的网站更新,以及优化也都是我在负责,前段时间发现网站的流量越来越少,用爱站站长工具查看了一下,竟然发现网站快照被劫持了,网站快照标题和实…

初创企业没网站,如何利用SEO推广?

在日常工作中,我们经常会遇到一些初创的企业,由于刚刚成立而没有建立自有网站,但这个时候,仍然有业务需要配合线上推广。 那么,初创企业没网站,如何利用SEO推广? 根据以往的SEO工作经验&#…