Asp.net core asp.net核心gzip压缩取决于响应大小

Asp.net core asp.net核心gzip压缩取决于响应大小,asp.net-core,Asp.net Core,我们使用gzip压缩,如: services.Configure<GzipCompressionProviderOptions>(options => options.Level = CompressionLevel.Fastest); services.AddResponseCompression(options => { options.Providers.Add<GzipCompressionProvider>(); }); ser

我们使用gzip压缩,如:

services.Configure<GzipCompressionProviderOptions>(options => options.Level = CompressionLevel.Fastest);
  services.AddResponseCompression(options =>
  {
    options.Providers.Add<GzipCompressionProvider>();
  });
services.Configure(选项=>options.Level=CompressionLevel.faster);
services.AddResponseCompression(选项=>
{
options.Providers.Add();
});

由于我们希望避免对小响应进行压缩,问题是我们是否可以配置gzip压缩,使其不用于小于XY的响应大小?

ASP.NET Core 2.1中的压缩中间件似乎不提供基于内容大小压缩数据的能力,所以对您的问题的简短回答是“否”

然而,我理解这样设置的主要原因是为了使整个请求端到端更快,这是应该为您做的

ASP.NET核心压缩中间件注意事项。 最终调用构造函数和方法,其中.NET中定义的CompressionLevel枚举映射到用于执行实际压缩的基础库中定义的压缩级别。从:

压缩级别必须是Z_DEFAULT_compression,或者介于0和9之间:1提供最佳速度,9提供最佳压缩,0完全不提供压缩(输入数据一次只复制一个块)。Z_DEFAULT_COMPRESSION要求在速度和压缩之间进行默认折衷(目前相当于6级)

根据ASP.NET核心压缩中间件映射压缩级别的方式(如和中所定义),我们可以推断出以下内容:

  • 压缩级别。最快:zlib压缩级别将为1,即更快,压缩更少
  • 压缩级别。最佳:zlib压缩级别为6,即速度和压缩之间的折衷
请注意,没有选项映射到更高的zlib压缩级别,例如9,它是最高的压缩级别,也是最昂贵的压缩级别,这可能会使ASP.NET核心web应用程序花费更多的时间压缩,而不是将整个内容发送回客户端

压缩级别的使用和总体考虑。 在web服务实现中,压缩只是一种使事情变得更快的工具,因此压缩应该尽可能轻,以避免压缩算法花费的时间超过网络交付未压缩的有效负载所需的时间

在我看来,它工作得最好,因为在大多数情况下,它保证客户端收到更快的响应,因此它通常是需要处理常见文件大小的网站或web api的最佳选择

另一方面,如果您的web服务需要交付大量内容,则会带来更多价值,因为它会对通过网络发送的数据量产生更大的影响


除此之外,客户机还可以通过适当设置Accept Encoding request HTTP头来指定是否应压缩响应,如文档中所述。

非常感谢您为这个漂亮的答案付出的努力!