Asp.net

用於靜態文件的 .NET Core 響應壓縮中間件

  • October 19, 2017

我為我的 asp.net core 1 應用程序啟用了響應壓縮中間件。我注意到啟用此功能後,我現在看到視圖響應具有內容編碼 g-zip,因此它適用於 html。

但是,我正在嘗試啟用它,以便從項目的 wwwroot 請求的靜態文件也以 g-zip 壓縮格式發送。例如視圖頭部引用的 js 文件或 css 文件。目前這不起作用,因為我看到文件是在沒有 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() - 不知道這會如何影響我試圖用壓縮做的事情。

訂單或您的中間件非常重要——它決定了每個項目如何執行的順序。您目前的程式碼將如下所示:

app.UseStaticFiles();

//snip

app.UseResponseCompression();

請注意,靜態文件將在響應壓縮中間件組件執行之前提供。

因此,您真正需要做的就是確保在管道中更早地添加壓縮:

//Near the start
app.UseResponseCompression();

//snip

app.UseStaticFiles();

引用自:https://stackoverflow.com/questions/46832723