.NET Core 系列之 WebAPI 响应压缩
共 1681字,需浏览 4分钟
·
2022-06-28 16:27
一、介绍
背景目前在开发一个爬虫框架,使用了.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
具体介绍看官方文档:https://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监听
1、请求头statistics选项卡中,接口耗时1.182秒
2、响应Transformer选项卡中,响应字节98,930
3、响应TextView选项卡中,不能直接看到明文
4、响应Headers选项卡中,Content-Encoding:gzip
转自:花阴偷移
链接:cnblogs.com/MrHSR/p/16334266.html