ASP.NET Core系列77中,如何实现WebAPI的响应压缩功能?

2026-05-05 19:151阅读0评论SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计811个文字,预计阅读时间需要4分钟。

ASP.NET Core系列77中,如何实现WebAPI的响应压缩功能?

一. 介绍 + 背景:目前开发一个爬虫框架,使用了.net core webapi接口作为爬虫调用入口。在调用webapi时发现爬虫耗时非常短(1秒左右),但客户端获取响应时间却高达3~4秒。

一.介绍

  背景:目前在开发一个爬虫框架,使用了.net core webapi接口作为爬虫调用入口,在调用 webapi时发现爬虫耗时很短(1秒左右),但客户端获取响应时间却在3~4秒。对于这个问题考虑使用响应压缩技术。

  网络带宽是一种有限资源。 减小响应大小通常可显著提高应用的响应速度。 减小有效负载大小的一种方式是压缩应用的响应。

  在 IIS、Apache 或 Nginx 中是使用基于服务器的响应压缩技术。考虑到动态压缩以及减少服务器的配置,这里介绍.net core中间件来实现响应压缩。

  压缩的事项:

    1)能够压缩的包括:CSS、JavaScript、HTML、XML 和 JSON。

    2)对图片等资产不会压缩,因为压缩的字节只会小幅减少,而被处理压缩所花费的时间所掩盖。

  3)不要压缩小于约 150-1000 字节的文件。

    4)客户端请求时通过Accept-Encoding来指定压缩类型,中间件支持二种常用的压缩类型如下:

   Accept-Encoding: br,gzip     --br是指Brotli 压缩格式,默认的压缩方式。     --gzip是指Gzip压缩格式。

   5)中间件为压缩指定一组默认的 MIME 类型:     

      application/javascript
      application/json
      application/xml
      text/css
      text/html
      text/json
      text/plain
      text/xml

  具体介绍看官方文档:docs.microsoft.com/zh-cn/aspnet/core/performance/response-compression?view=aspnetcore-5.0

二. 配置压缩中间件

  使用压缩中间件很简单,代码如下:

public class Startup { public void ConfigureServices(IServiceCollection services) { services.AddResponseCompression(); } public void Configure(IApplicationBuilder app, IHostingEnvironment env) { app.UseResponseCompression(); } }

  

三.演示

  客户端请求可以是Postman,Fiddler,RestSharp等,下面使用RestSharp来请求爬虫接口获取数据,默认RestSharp请求头带了Accept-Encoding: gzip, deflate

  3.1 未使用响应压缩技术,请求使用fiddler监听

    

    1)请求头statistics选项卡中,接口耗时4.822秒

     2) 响应Transformer选项卡中,响应字节572,839

     3) 响应TextView能直接看到明文

  3.2 使用响应压缩技术,请求使用fiddler监听

    

ASP.NET Core系列77中,如何实现WebAPI的响应压缩功能?

    1)请求头statistics选项卡中,接口耗时1.182秒

    2) 响应Transformer选项卡中,响应字节98,930

    3) 响应TextView选项卡中,不能直接看到明文

     4)响应Headers选项卡中,Content-Encoding:gzip

    

    

    

  

本文共计811个文字,预计阅读时间需要4分钟。

ASP.NET Core系列77中,如何实现WebAPI的响应压缩功能?

一. 介绍 + 背景:目前开发一个爬虫框架,使用了.net core webapi接口作为爬虫调用入口。在调用webapi时发现爬虫耗时非常短(1秒左右),但客户端获取响应时间却高达3~4秒。

一.介绍

  背景:目前在开发一个爬虫框架,使用了.net core webapi接口作为爬虫调用入口,在调用 webapi时发现爬虫耗时很短(1秒左右),但客户端获取响应时间却在3~4秒。对于这个问题考虑使用响应压缩技术。

  网络带宽是一种有限资源。 减小响应大小通常可显著提高应用的响应速度。 减小有效负载大小的一种方式是压缩应用的响应。

  在 IIS、Apache 或 Nginx 中是使用基于服务器的响应压缩技术。考虑到动态压缩以及减少服务器的配置,这里介绍.net core中间件来实现响应压缩。

  压缩的事项:

    1)能够压缩的包括:CSS、JavaScript、HTML、XML 和 JSON。

    2)对图片等资产不会压缩,因为压缩的字节只会小幅减少,而被处理压缩所花费的时间所掩盖。

  3)不要压缩小于约 150-1000 字节的文件。

    4)客户端请求时通过Accept-Encoding来指定压缩类型,中间件支持二种常用的压缩类型如下:

   Accept-Encoding: br,gzip     --br是指Brotli 压缩格式,默认的压缩方式。     --gzip是指Gzip压缩格式。

   5)中间件为压缩指定一组默认的 MIME 类型:     

      application/javascript
      application/json
      application/xml
      text/css
      text/html
      text/json
      text/plain
      text/xml

  具体介绍看官方文档:docs.microsoft.com/zh-cn/aspnet/core/performance/response-compression?view=aspnetcore-5.0

二. 配置压缩中间件

  使用压缩中间件很简单,代码如下:

public class Startup { public void ConfigureServices(IServiceCollection services) { services.AddResponseCompression(); } public void Configure(IApplicationBuilder app, IHostingEnvironment env) { app.UseResponseCompression(); } }

  

三.演示

  客户端请求可以是Postman,Fiddler,RestSharp等,下面使用RestSharp来请求爬虫接口获取数据,默认RestSharp请求头带了Accept-Encoding: gzip, deflate

  3.1 未使用响应压缩技术,请求使用fiddler监听

    

    1)请求头statistics选项卡中,接口耗时4.822秒

     2) 响应Transformer选项卡中,响应字节572,839

     3) 响应TextView能直接看到明文

  3.2 使用响应压缩技术,请求使用fiddler监听

    

ASP.NET Core系列77中,如何实现WebAPI的响应压缩功能?

    1)请求头statistics选项卡中,接口耗时1.182秒

    2) 响应Transformer选项卡中,响应字节98,930

    3) 响应TextView选项卡中,不能直接看到明文

     4)响应Headers选项卡中,Content-Encoding:gzip