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

在 .NET Core 5.0 中启用 Gzip 压缩

在 .NET Core 5.0 中启用 Gzip 压缩

在 .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.xdnf.cn/news/17652.html

相关文章:

  • 从ELF到进程间通信:剖析Linux程序的加载与交互机制
  • 玩转Docker | 使用Docker部署Trilium Notes知识库工具
  • 5G NTN 卫星测试产品
  • word格式设置-论文写作,样式,字号等
  • WPF之绑定!
  • LeetCode——241.为运算表达式设计优先级
  • 在 RHEL9 上搭建企业级 Web 服务(Tomcat)
  • Android Audio实战——获取活跃音频类型(十五)
  • 深度学习与遥感入门(五)|GAT 构图消融 + 分块全图预测:更稳更快的高光谱图分类(PyTorch Geometric 实战)
  • 【数据可视化-86】中国育儿成本深度可视化分析(基于《中国统计年鉴2023》数据):用Python和pyecharts打造炫酷可视化大屏
  • 论文阅读 arxiv 2024 MemGPT: Towards LLMs as Operating Systems
  • Apache IoTDB 全场景部署:基于 Apache IoTDB 的跨「端-边-云」的时序数据库 DB+AI
  • Java 之抽象类和接口
  • SSH远程连接TRAE时显示权限被拒绝检查方案
  • 可视化程序设计(4) - 第一个图形窗口程序
  • Java进阶之单列集合Set接口下的通用方法
  • Linux下的软件编程——标准IO
  • ECharts Y轴5等分终极解决方案 - 动态适配缩放场景
  • 后量子密码学的迁移与安全保障:迎接量子时代的挑战
  • NLP---IF-IDF案例分析
  • FreeRTOS学习:优化系统
  • LeetCode_哈希表
  • 论文阅读:Aircraft Trajectory Prediction Based on Residual Recurrent Neural Networks
  • OpenAI正式发布GPT-5:迈向AGI的关键一步
  • sqllabs——Less1
  • MySQL面试题及详细答案 155道(041-060)
  • ThreadLocal有哪些内存泄露问题,如何避免?
  • Mysql笔记-存储过程与存储函数
  • 【Linux】使用静态 BusyBox 解决操作系统“塌方”问题
  • ADK[3]历史对话信息保存机制与构建多轮对话机器人