asp.net - .NET Core 静态文件响应压缩中间件

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

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

但是,我正在尝试启用它,以便从项目的 wwwroot 请求的静态文件也可以通过 g 压缩发送。例如, View 头部引用的 js 文件或 css 文件。目前这不起作用,因为我看到发送的文件没有 g-zip 的内容编码。是否可以做我想做的事情,或者从 wwwroot 请求 Assets 时中间件不会启动?配置服务中的代码如下:

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() - 不确定这会如何影响我尝试进行的压缩。

最佳答案

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

app.UseStaticFiles();

//snip

app.UseResponseCompression();

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

因此,您真正需要做的就是确保在管道中更早地添加压缩:

//Near the start
app.UseResponseCompression();

//snip

app.UseStaticFiles();

关于asp.net - .NET Core 静态文件响应压缩中间件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46832723/

相关文章:

mono - 在 Cloud 9 上运行 ASP.NET 5

c# - 在 Visual Studio 2019 中添加带有 css 类的 div 的键盘快捷方式

jquery - MVC Ajax 部分 View - 根据返回的 View 加载到不同的 div

c# - IFormFile 在 asp.net core 2.1 中总是返回 null

jquery - 现在我正在执行 ajax jquery .post,mvc 客户端验证已损坏

javascript - js中如何动态计算字符串长度?

asp.net - 在服务器上缓存完整响应

asp.net - 在 ASP.NET 中启用未处理异常的事件日志记录

javascript - 设置加载内容的样式 jquerymobile

javascript - 将 JavaScript 变量发送到 asp.net webforms 代码隐藏始终为空