ASP.Net vs ASP.Net Core 压缩和 IIS



我开发了同一个应用程序,它在两个不同的项目中提供了一个JSON文件。一种是基于ASP。Net MVC4,另一种是基于ASP。Net Core 1.1.0。我的控制器生成的JSON大约为5MB。

然而,当发布这两个应用程序时,如果这个文件在两个平台上都压缩或不压缩,我会有不同的大小。

对于ASP。Net Core,我也尝试过在Startup.cs中启用压缩中间件来看看区别:

services.AddResponseCompression(
options =>
options.MimeTypes = ResponseCompressionMimeTypes.Defaults);
app.UseResponseCompression()
.UseStaticFiles();

这是我对返回给客户端的原始5Mo JSON的测试摘要:

在Visual Studio上运行,JSON大小在:上

  • MVC4:5MB

  • ASP。Net Core默认值:1.3MB

  • ASP。带压缩的网芯:869KB

在我的本地IIS Express上,启用了动态和静态压缩,我的JSON大小在:上

  • MVC4:256KB

  • ASP。Net Core默认值:1.3MB

  • ASP。带压缩的网芯:869KB

在我的生产IIS服务器上,启用了动态和静态压缩,JSON的大小在:

  • MVC4:136KB

  • ASP。Net Core默认值:675KB

  • ASP。带压缩的网芯:869KB

所以我们可以看到,对于MVC4,我们在生产中从一个未压缩的文件变成了一个高度压缩的文件。

对于ASP。Net Core,当在Startup.cs中启用压缩时,文件的大小是恒定的,但没有可能的那么小。

对于ASP。Net Core,当Startup.cs中未启用压缩时,默认情况下文件为gzip,但我不确定它是否使用了IIS服务器的压缩功能。

我的问题是如何在ASP中获得压缩的JSON。Net Core和我在基于MVC4的旧平台上获得的一样小。

谢谢

Sylvain

这只是一个粗略的猜测,但您的基线实验可能有问题。为什么未压缩的json在MVC中比在Core中大5倍(5MB比1.3MB)?我首先要确保它们大致相同。

巧合的是,用iis大小(675KB)压缩的核心比用iis压缩的mvc(136KB)大大约5倍。

你有可能把数字弄混了吗?这将解释这种差异,并证实IIS压缩在您的场景中比核心中间件有效约20%。

我的问题是如何在ASP中获得压缩的JSON。Net Core和我在基于MVC4的旧平台上获得的一样小。

看起来您已经通过以下方式利用IIS压缩:

  • 不使用核心中间件(app.UseResponseCompression)
  • 并且在IIS中启用了动态压缩
  • 以及在CCD_ 2中配置的适当内容类型

还值得一看核心中间件中的最佳压缩级别与最快压缩级别,例如:

services.Configure<GzipCompressionProviderOptions>(options => 
{
options.Level = CompressionLevel.Fastest;
});

最新更新