用于静态文件的.NET核心响应压缩中间件

时间:2017-10-19 14:49:12

标签: asp.net asp.net-mvc asp.net-core asp.net-core-mvc gzip

我为我的asp.net核心1应用程序启用了响应压缩中间件。我注意到在启用此功能后,我现在看到视图响应具有内容编码g-zip,因此它适用于html。

但是,我尝试启用它,以便从项目的wwwroot请求的静态文件也以g-zipped格式发送。例如,视图头部或css文件中引用的js文件。目前我还没有工作,因为我发现这些文件是在没有g-zip内容编码的情况下发送的。是否有可能做我想做的事情,或者从wwwroot请求资产时中间件是否没有启动?配置服务中的以下代码:

services.AddResponseCompression(options =>
{
  options.Providers.Add<GzipCompressionProvider>();
  options.MimeTypes = ResponseCompressionDefaults.MimeTypes.Concat(new[] { 
  "image/jpeg", "image/png", "application/font-woff2", "image/svg+xml"});
  options.EnableForHttps = true;
});

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

配置中的代码:

app.UseResponseCompression();

我也在使用useStaticFiles() - 不确定这可能会影响我尝试使用压缩做什么。

1 个答案:

答案 0 :(得分:8)

订单或中间件非常重要 - 它决定了每个项目的运行顺序。您当前的代码将如下所示:

app.UseStaticFiles();

//snip

app.UseResponseCompression();

请注意,静态文件将在响应压缩中间件组件运行之前提供。

所以你真正需要做的就是确保在管道中更早地添加压缩:

//Near the start
app.UseResponseCompression();

//snip

app.UseStaticFiles();
相关问题