我已經按照所有文檔在我的.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