ASP.NET Core 文件響應(yīng)壓縮的常見(jiàn)使用誤區(qū)
誤區(qū)1:未使用 Brotil 壓縮
幾乎不需要任何額外的代價(jià),Brotil 壓縮算法可以幫助你的網(wǎng)站提升約 20% 靜態(tài)資源加載性能。
同時(shí)啟用 Gzip / Brotil 壓縮
Gzip 有更好的 user-agent 兼容性,而 Brotli 有更好的性能。
所以我們通常需要在 ASP.NET Core 網(wǎng)站中同時(shí)啟用這兩種壓縮。
如何區(qū)分 Gzip 壓縮和 Brotli 壓縮
網(wǎng)站啟用 Brotli 壓縮時(shí),服務(wù)器請(qǐng)求返回頭 Content-Encoding 中會(huì)包含 br 字樣,否則是 gzip。
誤區(qū)2:使用 Fastest 級(jí)別的 Brotli 壓縮
如果你閱讀并參考了微軟官方文檔或者其他中文資源,比如:
ASP.NET Core 中的響應(yīng)壓縮 - MS Doc
在ASP.NET Core中使用brotli壓縮 - Cnblogs
那么你可能會(huì)在代碼中像下面這樣使用壓縮功能:
寫(xiě)法1:使用默認(rèn)的壓縮行為(框架將隱式添加 Brotli 和 Gzip 功能)
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
services.AddResponseCompression();
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
app.UseResponseCompression();
}
}
寫(xiě)法2:顯式添加壓縮功能
public void ConfigureServices(IServiceCollection services)
{
services.AddResponseCompression(options =>
{
options.Providers.Add<BrotliCompressionProvider>();
options.Providers.Add<GzipCompressionProvider>();
options.Providers.Add<CustomCompressionProvider>();
options.MimeTypes =
ResponseCompressionDefaults.MimeTypes.Concat(
new[] { "image/svg+xml" });
});
services.Configure<BrotliCompressionProviderOptions>(options =>
{
options.Level = CompressionLevel.Fastest;
});
}
寫(xiě)法3:自定義 BrotliCompressionProvider
public class BrotliCompressionProvider : ICompressionProvider
{
public string EncodingName => "br";
public bool SupportsFlush => true
public Stream CreateStream(Stream outputStream)
{
return new BrotliStream(outputStream,CompressionLevel.Fastest);
}
}
不幸的是,以上三種寫(xiě)法都沒(méi)有發(fā)揮出 Brotil 壓縮算法的優(yōu)勢(shì)。
它們的共同點(diǎn)是均使用了 CompressionLevel.Fastest 壓縮級(jí)別。
而在 CompressionLevel.Fastest 級(jí)別時(shí),Brotil 與 Gzip 壓縮性能幾乎無(wú)異。
參考:Introducing Support for Brotli Compression

誤區(qū)3:使用 Optimal 級(jí)別的 Brotli 壓縮
CompressionLevel 只有三個(gè)枚舉值:Fastest / NoCompression / Optimal。
既然 Fastest 級(jí)別沒(méi)有用,那我們只能換成 Optimal 了。


最佳實(shí)踐:使用 4 或 5 級(jí)別的 Brotli 壓縮
在 Introducing Support for Brotli Compression 這篇文章中,作者對(duì)不同級(jí)別 Brotil 的壓縮耗時(shí)做了評(píng)測(cè),也就是下面這幅圖。

觀察這副圖,Brotil 的壓縮質(zhì)量其實(shí)有 1~11 個(gè)級(jí)別。
那我們?nèi)绾巫远x Brotli 的壓縮級(jí)別呢,答案是直接將級(jí)別對(duì)應(yīng)的整數(shù)轉(zhuǎn)成 CompressionLevel 枚舉。

盡管這種寫(xiě)法看起來(lái)十分古怪,但通過(guò)考察 .NET 源碼,可以確鑿這種寫(xiě)法是可行的。
以上就是ASP.NET Core 文件響應(yīng)壓縮的常見(jiàn)使用誤區(qū)的詳細(xì)內(nèi)容,更多關(guān)于ASP.NET Core 文件響應(yīng)壓縮的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
- ASP.NET Core中的響應(yīng)壓縮的實(shí)現(xiàn)
- asp.net core為IHttpClientFactory添加動(dòng)態(tài)命名配置
- 如何在ASP.NET Core中使用HttpClientFactory
- 在ASP.NET Core中用HttpClient發(fā)送POST, PUT和DELETE請(qǐng)求
- .NET CORE HttpClient的使用方法
- .NET Core使用HttpClient進(jìn)行表單提交時(shí)遇到的問(wèn)題
- .Net Core下HTTP請(qǐng)求IHttpClientFactory示例詳解
- Asp.Net Core2.1前后使用HttpClient的兩種方式
- ASP.NET Core針對(duì)一個(gè)使用HttpClient對(duì)象的類編寫(xiě)單元測(cè)試詳解
- .NET Core中HttpClient的正確打開(kāi)方式
- .NET Core中使用HttpClient的正確姿勢(shì)
- .NET Core 2.1中HttpClientFactory的最佳實(shí)踐記錄
- .Net Core HttpClient處理響應(yīng)壓縮詳細(xì)
相關(guān)文章
ASP.NET(C#)實(shí)現(xiàn)一次性動(dòng)態(tài)上傳多張圖片的代碼(多個(gè)文件)
我們就要讓這些文件上傳框動(dòng)態(tài)添加,下面我以我做的一個(gè)圖庫(kù)管理中的上傳圖片的功能為例2011-10-10
ASP.NET MVC分頁(yè)的實(shí)現(xiàn)方法
這篇文章主要為大家詳細(xì)介紹了ASP.NET MVC分頁(yè)的實(shí)現(xiàn)方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-03-03
Asp .net 調(diào)用帶參數(shù)的存儲(chǔ)過(guò)程
本文主要介紹了Asp .net 調(diào)用帶參數(shù)的存儲(chǔ)過(guò)程的相關(guān)知識(shí)。具有很好的參考價(jià)值。下面跟著小編一起來(lái)看下吧2017-03-03
在.NET Core控制臺(tái)程序中如何使用依賴注入詳解
這篇文章主要給大家介紹了關(guān)于在.NET Core控制臺(tái)程序中如何使用依賴注入的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2018-10-10
有關(guān).NET參數(shù)傳遞的方式引發(fā)的思考
在.NET中參數(shù)的使用方法主要為可選參數(shù)、命名參數(shù)、可變數(shù)量參數(shù)等等。本文也是主要介紹這三種參數(shù)的使用方法2016-12-12
ASP.NET Core 6.0 中使用Autofac的項(xiàng)目實(shí)踐
本文主要介紹了ASP.NET Core 6.0 中使用Autofac的項(xiàng)目實(shí)踐,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2025-01-01
詳解ASP.NET Core 中的多語(yǔ)言支持(Localization)
本篇文章主要介紹了ASP.NET Core 中的多語(yǔ)言支持(Localization) ,具有一定的參考價(jià)值,有興趣的可以了解一下2017-08-08
樹(shù)莓派ASP.NET環(huán)境配置過(guò)程詳解
這篇文章主要介紹了樹(shù)莓派ASP.NET環(huán)境配置,本篇文章內(nèi)容是根據(jù)mono官網(wǎng)上查閱的配置教程所寫(xiě),需要的朋友可以參考下2022-04-04

