【问题标题】:ASP.Net vs ASP.Net Core compression & IISASP.Net 与 ASP.Net Core 压缩和 IIS
【发布时间】:2017-02-09 01:31:06
【问题描述】:

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

但是,在发布这 2 个应用程序时,如果在两个平台上压缩或未压缩此文件,我的大小会有所不同。

对于 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.Net 内核:869KB

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

  • MVC4:256KB

  • ASP.Net Core 默认:1.3MB

  • 压缩后的 ASP.Net 内核:869KB

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

  • MVC4:136KB

  • ASP.Net Core 默认:675KB

  • 压缩后的 ASP.Net 内核:869KB

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

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

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

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

谢谢

西尔万

【问题讨论】:

  • Mo 和 Ko 是什么单位?这些应该是 Mb 和 Kb 吗?
  • 是的,没错。帖子已编辑。
  • Compression 有几个设置来优化速度、CPU 效率、流媒体等。核心中的默认值对 CPU 和流媒体更有效,但会产生稍大的输出。尝试重新配置它。

标签: iis asp.net-core compression


【解决方案1】:

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

巧合的是,您的 core-compressed-by-iis 大小 (675KB) 大约是 mvc-compressed-by-iis (136KB) 的 5 倍。

你有没有可能把数字弄混了?这将解释差异并确认 IIS 压缩在您的方案中比核心中间件有效约 20%。

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

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

  • 不使用核心中间件 (app.UseResponseCompression)
  • 并在 IIS 中启用动态压缩
  • system.webServer/httpCompression/dynamicTypes 中的正确content type configured

Core Middleware 中查看 Optimal vs Fastest 压缩级别可能也值得一看,例如:

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

【讨论】:

    猜你喜欢
    • 2019-12-26
    • 2011-04-05
    • 2019-05-21
    • 1970-01-01
    • 2016-11-17
    • 2016-06-24
    • 1970-01-01
    • 2014-02-02
    • 2010-10-27
    相关资源
    最近更新 更多