Asp.net
用於靜態文件的 .NET Core 響應壓縮中間件
我為我的 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();