摘要:响应压缩中间件是Asp.NET Core的一部分,它通过应用支持的压缩算法(如Gzip和Brotli)来减小服务器发送到客户端的响应体积。这有助于加速数据传输,尤其适用于大段文本和数据,同时有效降低带宽消耗。
使用响应压缩中间件提高程序性能
响应压缩中间件是Asp.NET Core的一部分,它通过应用支持的压缩算法(如Gzip和Brotli)来减小服务器发送到客户端的响应体积。这有助于加速数据传输,尤其适用于大段文本和数据,同时有效降低带宽消耗。
未使用压缩,响应1M
在ASP.NET Core项目中启用响应压缩中间件,需要在服务配置中启用压缩支持,并设置选项。
usingMicrosoft.Net.Http.Headers;usingMicrosoft.AspNetCore.ResponseCompression;
varbuilder = WebApplication.CreateBuilder;
builder.Services.AddResponseCompression(options =>
{
options.EnableForHTTPS =true;// 启用HTTPS的压缩
});
varapp = builder.Build;
app.UseResponseCompression;
app.Run(asynccontext =>
{
varaccept = context.Request.Headers[HeaderNames.AcceptEncoding];
if(!StringValues.IsOrEmpty(Accept))
{
context.Response.Headers.Append(HeaderNames.Vary, HeaderNames.AcceptEncoding);
}
context.Response.ContentType ="text/plain";
varresponseText =newstring('A'1000000);// 1,000,000个字符
awaitcontext.Response.WriteAsync(responseText);
});
app.Run;
https压缩
默认情况下,ASP.NET Core使用Brotli作为优先压缩算法。但开发者也可以自定义使用的算法。例如,可以通过添加Gzip压缩提供程序来增强响应速度:
builder.Services.AddResponseCompression(options =>{
options.EnableForHttps =true;
options.Providers.Add;
});
Gzip压缩
如果需要使用自定义的压缩算法,可以通过实现ICompressionProvider接口来创建自定义压缩实现。EncodingName表示此生成的内容编码。中间件使用这些信息根据请求的Accept-Encoding标头中指定的列表来选择提供程序:publicclassCustomCompressionProvider:ICompressionProvider{
publicstringEncodingName =>"mycustomcompression";
publicboolSupportsFlush =>true;
publicStreamCreateStream(Stream outputStream)
{
// 创建自定义压缩流包装器
returnoutputStream;
}
}
然后在服务配置中添加自定义压缩提供程序:
builder.Services.AddResponseCompression(options =>{
options.Providers.Add;
options.Providers.Add;
options.Providers.Add;
options.MimeTypes =
ResponseCompressionDefaults.MimeTypes.Concat(
new {"image/svg+xml"});
});响应压缩中间件为压缩指定了一组默认的MIME类型。可以通过ResponseCompressionOptions.MimeTypes替换或添加MIME类型。请注意,不支持通配符MIME类型,如text/*。示例为image/svg+xml添加MIME类型,并压缩和提供ASP.NET Core横幅图像(banner.svg):builder.Services.AddResponseCompression(options =>
{
options.EnableForHttps =true;
options.Providers.Add;
options.MimeTypes =
ResponseCompressionDefaults.MimeTypes.Concat(
new {"image/svg+xml"});
});
• 默认情况下,ASP.NET Core 响应压缩中间件会启用HTTPS压缩。
• EnableForHttps:是否对HTTPS封包进行压缩(默认是false)
• 默认是采用Brotli压缩
• MimeTypes:设定要进行压缩的MimeTypes
• GzipCompressionProviderOptions:设置压缩方式(默认是CompressionLevel.Fastest快速压缩,NoCompression不应执行压缩 ,Optimal即使压缩需要更长的时间, 也应以最佳方式压缩响应。)
其他内容摘自 https://www.cnblogs.com/yyfh/p/11796421.html
Content-Encoding 标头值说明
br
Brotli 压缩数据格式
DEFLATE
DEFLATE 压缩数据格式
gzip
Gzip 文件格式
以就是在ASP.NET Core中配置响应压缩中间件的详教程,可以帮助你减少响应大小,提高应用的响应速度。
来源:opendotnet