.NET 6响应动态及静态资源压缩实现,.NET可以跨平台部署了,在windows下IIS可能配置很多功能,如动态压缩和静态压缩只要在IIS中勾上就行了,但是到了LINUX下部署却没有这么方便的配置功能,要么套一层代理如NGINX,在代更中配置,要么就需要代码实现,本文重点介绍代码如何实现动态及静态资源压缩。
一、在(appsettings.json\appsettings.Development.json)中添加是否开启压缩的配置,因为部署在Windows下用IIS的压缩功能就行了:
"appSettings": {
"UseGzip": true
},二、在Program.cs中添加开启压缩的代码:
var builder = WebApplication.CreateBuilder(args);
//在builder初始化之后添加压缩代码
//从appSettings中读取是否开启压缩的配置
bool useGzip = builder.Configuration.GetValue<bool>("appSettings:UseGzip");
//注册压缩
if (useGzip)
{
//注册压缩配置
builder.Services.AddResponseCompression(options =>
{
options.EnableForHttps = true;
//添加Brotli压缩,如果浏览器支持Brotli压缩就会优先使用Brotli压缩
options.Providers.Add<BrotliCompressionProvider>();
//添加Gzip压缩
options.Providers.Add<GzipCompressionProvider>();
//设置支持压缩类型
options.MimeTypes = ResponseCompressionDefaults.MimeTypes;
//默认支持以下类型
//"text/plain",
//"text/css",
//"application/javascript",
//"text/html",
//"application/xml",
//"text/xml",
//"application/json",
//"text/json",
//"application/wasm"
});
//Brotli压缩
builder.Services.Configure<BrotliCompressionProviderOptions>(options =>
{
//压缩级别,如果CPU及内存不高的情况下只能选择Fastest
options.Level = CompressionLevel.Fastest;
});
//Gzip压缩
builder.Services.Configure<GzipCompressionProviderOptions>(options =>
{
//压缩级别,如果CPU及内存不高的情况下只能选择Fastest
options.Level = CompressionLevel.Fastest;
});
}
//builder.Build()
var app = builder.Build();
//在builder.Build()之后设置启用压缩
if (useGzip)
{
app.UseResponseCompression();
}
//UseStaticFiles必须放在UseResponseCompression之后,否则静态资源压缩不生效
app.UseStaticFiles();
app.UseRouting();
app.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
app.Run();三、测试压缩效果:
打开F12查看html、js、css的响应头,查看是否有content-encoding字段,如果有就表示压缩生效了:

点赞(0)
请不要重复点赞
评论列表