架构师_程序员_码农网

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 14708|回复: 4

[ASP.NET] asp.net core 3.1 启用网站 Brotli 压缩算法

[复制链接]
发表于 2021-1-23 12:12:25 | 显示全部楼层 |阅读模式
Brotli是Google开发的一种新的压缩算法。较小的压缩响应大小允许更好的空间利用和更快的页面加载。在许多情况下,Brotli都能胜过gzip。优势:对于典型的Web资产(例如css,html,js),Brotli优于gzip 17-25%。与gzip -9相比的Brotli -11密度:html(多语言语料库):节省js的25%(alexa最高的10k):节省17%缩小的js(alexa的前10k):节省17%的css(alexa的前10k):20节省百分比。

Brotli 算法介绍

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

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

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

Brotli 和 Gzip 对比

7be5eaa6-9d63-45e3-a415-adbbd54a3834.jpg
评价压缩算法时,我们重点看两个指标:压缩率和压缩速度。上图中可以看到,无论用gzip 9个压缩级别中的哪一个,它的压缩率都低于brotli(相比gzip,压缩级别它还可以配置为10),压缩速度也更慢。

Brotli优势:对于典型的Web资产(例如css,html,js),Brotli优于gzip 17-25%。与gzip -9相比的Brotli -11密度:html(多语言语料库):节省js的25%(alexa最高的10k):节省17%缩小的js(alexa的前10k):节省17%的css(alexa的前10k):20节省百分比

asp.net core 启用 Brotli

Accept-Encoding 标头值

9221a3ba-eb1c-48b6-adee-df70094e402b.jpg

代码配置

下面的代码演示如何为默认 MIME 类型和压缩提供程序(Brotli和Gzip)启用响应压缩中间件:


注意:

  • app.UseResponseCompression 必须在app.UseMvc 之前调用。
  • 使用Fiddler、 Firebug或Postman等工具设置 Accept-Encoding 请求标头,并研究响应标头、大小和正文。



默认情况下,Brotli 压缩提供程序会随Gzip 压缩提供程序一起添加到压缩提供程序的数组中。 当客户端支持 Brotli 压缩数据格式时,压缩 默认为 Brotli 压缩 。 如果客户端不支持 Brotli,则在客户端支持 Gzip 压缩时,压缩默认为 Gzip。

br 压缩测试

打开 fiddler 抓包工具,使用浏览器访问我们网站的地址,可以看到如下:

fbfd2bae-4498-41ab-842a-ed93bda2346a.jpg


请求头:Accept-Encoding: gzip, deflate, br

响应头:Content-Encoding: br

当进行压缩时,会删除 Content-Length 的标头,因为在对响应进行压缩时,正文内容会发生更改。

当进行压缩时,会删除 Content-MD5 标头,因为正文内容已更改,并且哈希不再有效。


当 asp.net core 启用 https 功能的时候,Brotli 对于 html、json 压缩不会生效,但是可以对 js、css 进行压缩。(有可能是字符长度太小,不值得压缩,应该可以设置

(完)





上一篇:智能域名通配符DNS查询
下一篇:asp.net core 在内存中对 zip 压缩包批量重命名
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
发表于 2022-9-24 10:48:26 | 显示全部楼层
原创不易,看下源码
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
发表于 2023-2-28 11:51:11 | 显示全部楼层
感谢分享
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
 楼主| 发表于 2023-9-1 21:59:51 | 显示全部楼层
FireShot Capture 006 - Squash Compression Benchmark.png
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
 楼主| 发表于 2023-9-17 10:47:02 | 显示全部楼层
.NET 6 测试 Gzip 和 Brotli 算法
https://www.itsvse.com/thread-10663-1-1.html
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

免责声明:
码农网所发布的一切软件、编程资料或者文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。

Mail To:help@itsvse.com

QQ|手机版|小黑屋|架构师 ( 鲁ICP备14021824号-2 )|网站地图

GMT+8, 2024-4-25 23:54

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表