当前位置: 首页 > news >正文

在 .NET Core 5.0 中启用 Gzip 压缩 Response

在 .NET Core 5.0 中启用 Gzip 压缩 Response

在 .NET Core 5.0 (ASP.NET Core 5.0) 中启用 Gzip 压缩主要通过响应压缩中间件实现。以下是详细配置步骤:

1. 安装必要的 NuGet 包

首先确保已安装响应压缩包:

dotnet add package Microsoft.AspNetCore.ResponseCompression

2. 在 Startup.cs 中配置

ConfigureServices 方法中添加服务:

public void ConfigureServices(IServiceCollection services)
{添加响应压缩服务services.AddResponseCompression(options ={options.EnableForHttps = true;  如果需要为HTTPS启用压缩options.Providers.AddGzipCompressionProvider();添加需要压缩的MIME类型(默认包含textcss、applicationjavascript等)options.MimeTypes = ResponseCompressionDefaults.MimeTypes.Concat(new[]{applicationjson,textjson,textplain,applicationxml,textxml,texthtml});});配置Gzip压缩选项services.ConfigureGzipCompressionProviderOptions(options = {options.Level = CompressionLevel.Optimal;  压缩级别});其他服务配置...services.AddControllers();
}

Configure 方法中使用中间件:

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{响应压缩中间件应该放在管道中较前的位置但要在异常处理中间件之后app.UseResponseCompression();其他中间件...app.UseRouting();app.UseEndpoints(endpoints ={endpoints.MapControllers();});
}

3. 压缩级别选项

Gzip 提供多种压缩级别:

services.ConfigureGzipCompressionProviderOptions(options = 
{可选值:- CompressionLevel.NoCompression (不压缩)- CompressionLevel.Fastest (最快速度,压缩率较低)- CompressionLevel.Optimal (最佳平衡,默认值)- CompressionLevel.SmallestSize (最小尺寸,但最慢)options.Level = CompressionLevel.Optimal;
});

4. 验证 Gzip 是否生效

可以使用以下方法验证:

  1. 使用浏览器开发者工具:

    • 打开Network选项卡
    • 检查响应头中是否有 Content-Encoding gzip
  2. 使用 cURL:

    curl -I -H Accept-Encoding gzip httplocalhost5000apiyour-endpoint
    

    检查返回头中是否包含 Content-Encoding gzip

5. 高级配置

排除特定路径

如果需要排除某些路径不压缩:

app.UseResponseCompression();app.Use(async (context, next) =
{if (context.Request.Path.StartsWithSegments(no-compress)){context.Features.GetIResponseCompressionFeature().DisableCompression();}await next();
});

自定义压缩提供程序

如果需要自定义压缩逻辑:

services.AddResponseCompression(options =
{options.Providers.AddCustomCompressionProvider();
});自定义压缩提供程序
public class CustomCompressionProvider  ICompressionProvider
{public string EncodingName = gzip;public bool SupportsFlush = true;public Stream CreateStream(Stream outputStream){return new GZipStream(outputStream, CompressionLevel.Optimal);}
}

注意事项

  1. 不要压缩已经压缩的内容(如JPEGPNG等二进制文件)
  2. HTTPS压缩:默认出于安全考虑不压缩HTTPS内容,需显式设置 EnableForHttps = true
  3. 性能影响:压缩会消耗CPU资源,高流量应用需要测试性能影响
  4. 客户端支持:确保客户端请求中包含 Accept-Encoding gzip

通过以上配置,你的 .NET Core 5.0 应用就可以有效地使用 Gzip 压缩来减少响应大小,提高网络传输效率了。

http://www.lryc.cn/news/617895.html

相关文章:

  • js异步操作 Promise :fetch API 带来的网络请求变革—仙盟创梦IDE
  • Qwen2.5-vl源码解读系列:ImageProcessor
  • Android14 QS编辑页面面板的加载解析
  • Android中Activity销毁底层原理
  • GSON 框架下百度天气 JSON 数据转 JavaBean 的实战攻略
  • Mysql——Sql的执行过程
  • 从 0 到 1:用 MyCat 打造可水平扩展的 MySQL 分库分表架构
  • Linux-常用命令
  • 深入解析 resolv.conf 文件:DNS 配置的核心
  • 驱动_ConfigFS多级目录操作
  • 光功率dBm为何是负数?一文详解
  • Google OAuth 配置步骤指南,实现Google Drive文件同步功能。
  • UVM验证—UVM 简述
  • 快速了解TF-IDF算法
  • 逐际动力开源运控 tron1-rl-isaacgym 解读与改进
  • 自由学习记录(81)
  • 5B 参数,消费级显卡可部署:Wan2.2-TI2V-5B 本地部署教程,9分钟跑出电影级大片!
  • 【运维进阶】WEB 服务器
  • GB17761-2024标准与电动自行车防火安全的技术革新
  • Redis 数据结构及特点
  • 【工作笔记】Wrappers.lambdaQuery()用法
  • ROS2学习(1)—基础概念及环境搭建
  • JavaEE 初阶第十七期:文件 IO 的 “管道艺术”(下)
  • vscode新建esp32工程,没有sample_project怎么办?
  • 计算机网络:ovn数据通信都是用了哪些协议?
  • 应用层模拟面试题
  • C语言(06)——二、八、十、十六进制的相互转换
  • Effective C++ 条款35:考虑 virtual函数以外的其他选择
  • 【已解决】报错:WARNING: pip is configured with locations that require TLS/SSL
  • HarmonyOS 开发入门 第一章