让ResponseCompression在.NET Core 2.0 Web API中工作
问题描述:
我已经按照所有文档在我的.NET Core 2.0 Web API项目中设置ResponseCompression,但是我看不到传输大小的差异。下面是邮差前和后的结果使用:让ResponseCompression在.NET Core 2.0 Web API中工作
压缩前: https://i.stack.imgur.com/jAAuy.jpg
压缩后: https://i.stack.imgur.com/HviP5.jpg
这里是我的ConfigureServices方法在Startup.cs开头:
public void ConfigureServices(IServiceCollection services)
{
services.AddResponseCompression(options =>
{
options.Providers.Add<GzipCompressionProvider>();
});
services.Configure<GzipCompressionProviderOptions>(options =>
{
options.Level = CompressionLevel.Optimal;
});
这是我在Startup.cs中的配置方法:
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
app.UseResponseCompression();
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseSwagger();
app.UseSwaggerUI(c =>
{
c.SwaggerEndpoint("/swagger/v1/swagger.json", "My API V1");
});
app.UseMvc();
}
这里是我的VendorController我的获取动作:
[HttpGet]
public IActionResult Get()
{
var stuff = new Collection<string>();
for (int i = 0; i < 100000; i++)
{
stuff.Add($"hello{i}");
}
return Ok(stuff);
}
我不使用IIS,这里是我的Program.cs:
public class Program
{
public static void Main(string[] args)
{
BuildWebHost(args).Run();
}
public static IWebHost BuildWebHost(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>()
.Build();
}
任何帮助将非常感激。所有的文件都表示这应该会给我的转移量带来很大的差异。
感谢您的答复CodeFuller,这有助于一吨。我不熟悉Postman和Fiddler。那么,我在Postman上看到的最终结果是什么,因为它已经被解压缩了?是这样的流程: 请求(http) - >响应(tcp) - >压缩(tcp) - >未压缩(tcp) - >响应(http)?有没有一个网站或链接可以让我更详细地解释TCP/HTTP发生了什么? – stumpykilo
压缩是HTTP协议的一部分,因此底层传输协议(如TCP)不知道它。邮差向您显示未压缩数据的大小并不是因为它接收到未压缩数据,而是因为它知道如何计算原始数据的大小。查看这些文章以开始:https://developer.mozilla.org/en-US/docs/Web/HTTP/Compression和https://betterexplained.com/articles/how-to-optimize-your-site-with -gzip压缩/ – CodeFuller