在启动课程中,我将以下行添加到我的asp.net核心应用程序
services.AddResponseCompression();
所以configureServices方法如下所示
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<MyDBContext>(options => options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
services.AddCors(options =>
{
options.AddPolicy("AllowAll",
builder =>
{
builder
.AllowAnyOrigin()
.AllowAnyMethod()
.AllowAnyHeader();
});
});
services.AddMvc();
services.AddResponseCompression();
}
我还添加了以下行来配置方法
app.UseResponseCompression();
这是配置方法
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseCors("AllowAll");
app.UseResponseCompression();
app.UseMvc();
}
现在当我运行项目时,它工作得更快,响应的大小已经减少和压缩(我通过chrome控制台网络选项卡检查它), 它是响应压缩中间件压缩响应的目的
我的问题是:使用此中间件是否有任何缺点或是否有任何我不应该使用响应压缩的情况?
答案 0 :(得分:4)
优点
缺点
答案 1 :(得分:3)
好的经过一些调查后,自从dot.net core 2以来,有一些变化。
首先,UseResponseCompression
应该用作最后一个选项,或者换句话说
无法使用以下基于服务器的压缩技术:
直接托管:
仅在高性能api端点上推荐使用Kestrel托管,对于面向公众的端点,您应该在IIS下运行,因此请使用本机压缩,而不是中间件。
当开箱即用Gzip对中间件进行压缩时,这种用法非常糟糕,并且往往会减慢总往返时间,而不是特别针对小型有效负载进行改进。 From what I can see他们改变了.net标准2.0的实现,我不确定它的效果如何。
但是当你谈论压缩时,它实际上取决于用例,所以你应该使用你期望的负载进行性能测试,并设置你的设置,看看你是否有任何改进。
有关gzip主题的一般信息,您应该查看另一个question