☰
.NET 11 - ASP.NET Core 支持使用Zstandard进行压缩和解压缩
2026/10/17 6:50:37 网站建设 项目流程

1. 简单介绍

微软在2026/10/13发布了.NET11 Release Candidate 2,11月微软将会发布.NET11正式版,这是一个STS版本(Standard Term Support),微软提供两年支持。当前需要安装Visual Studio Code with the C# Dev Kit或者Visual Studio 2026 Insiders,才能体验.NET11新特性。

这边将简单尝试一下.NET11中基于Zstandard (简称zstd)的压缩新特性。

2.Zstandard说明

常见的压缩格式有rar,zip,7z,tar等,而压缩算法有gzip,Brotli,Zstd,Pigz,ISA-L,Pzstd等。一个格式并不是绑定到一个特定压缩算法的,比如rar, zip, 7z都支持好几个压缩算法。Zstd是facebook于2016推出的,Zstd在压缩速度和压缩比方面都能提供比较好的效果。

下面是Zstandard官方做的一个benchmark数据,

note, zstd 支持配置--fast参数,数字越大压缩速度越快,不过压缩比会降低(compression ratio)。

3. Zstandard实践

3.1 制作项目

创建一个ASP.NET Core WebAPI项目,在项目中添加和配置request compression middleware和Response compression middleware。同时通过ZstandardCompressionOptions可以配置Quality(值可以为1-22),值越大,压缩的最终size越小,不过速度变慢。

var builder = WebApplication.CreateBuilder(args) ... builder.Services.AddResponseCompression(options => { options.EnableForHttps = true; }); builder.Services.AddRequestDecompression(); builder.Services.Configure<ZstandardCompressionProviderOptions>(options => { options.CompressionOptions = new ZstandardCompressionOptions { Quality = 6 }; }); var app = builder.Build(); ... app.UseRequestDecompression(); app.UseResponseCompression(); app.MapGet("/zstdcheck", () => { try { using StreamReader reader = new("response_202610.json"); string text = reader.ReadToEnd(); return Results.Ok(text); } catch (IOException e) { return Results.Empty; } }) .WithName("ZstandardCompressionCheck"); app.Run();

假定已经存在一个文件response_202610.json,大小是2M多。

3.2 测试一下

1) 使用dotnet run命令运行项目,如果配置了swagger,则打开Swagger页面,

3) 当设定Quality值为6时候,

查看webapi的网络请求情况,发现最终response size是34.4KB,同时时间消耗了103ms。

同时在Response headers中多出了Vary:Accept-Encoding的header,

4) 当设定Quality值为16时候

查看webapi的网络请求情况,发现最终response size是30.7KB,时间消耗了755ms。说明Quality值越大,确实压缩的size越小,但是速度越慢。

4.总结

本文简单尝试了一下.NET11支持进行Zstandard压缩的新特性,当前.NET11已经进入Release Candidate 2阶段,需要继续学习一下新特性。

本文如果哪里有错误,麻烦告之,谢谢谢谢!

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询