亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

ASP.NET Core 文件響應(yīng)壓縮的常見(jiàn)使用誤區(qū)

 更新時(shí)間:2021年05月31日 14:34:22   作者:ExperDot  
在微軟官方文檔中,未明確指出文件壓縮功能的使用誤區(qū)。本文將對(duì) ASP.NET Core 文件響應(yīng)壓縮的常見(jiàn)使用誤區(qū)做出說(shuō)明。

誤區(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ì)在代碼中像下面這樣使用壓縮功能:

  寫法1:使用默認(rèn)的壓縮行為(框架將隱式添加 Brotli 和 Gzip 功能)

public class Startup
{
    public void ConfigureServices(IServiceCollection services)
    {
        services.AddResponseCompression();
    }

    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
        app.UseResponseCompression();
    }
}

  寫法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;
    });
}

  寫法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);
    }
}

  不幸的是,以上三種寫法都沒(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 枚舉。

 盡管這種寫法看起來(lái)十分古怪,但通過(guò)考察 .NET 源碼,可以確鑿這種寫法是可行的。

以上就是ASP.NET Core 文件響應(yīng)壓縮的常見(jiàn)使用誤區(qū)的詳細(xì)內(nèi)容,更多關(guān)于ASP.NET Core 文件響應(yīng)壓縮的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評(píng)論