我已经为我的 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/