最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

ASP.NET Core 9.0 中新增的MapStaticAssets() 中間件詳解

 更新時間:2024年12月03日 09:10:51   作者:萬雅虎  
文章介紹了ASP.NET Core 9.0新增的MapStaticAssets中間件,該中間件解決了UseStaticFiles存在的缺陷,如缺乏靜態(tài)資源傳輸壓縮、ETag低效緩存和缺乏指紋識別,它通過生成時間壓縮、基于內(nèi)容的ETags和指紋識別來提升性能,感興趣的朋友一起看看吧

前言

Core 9.0版本中新增的內(nèi)容不算多,除了內(nèi)置OpenAPI 外 應(yīng)該就屬MapStaticAssets中間件最有價值了,最初MapStaticAssets主要是為了解決Blazor靜態(tài)資源加載緩慢而生的,當(dāng)然只要是wwwroot下的任何靜態(tài)資產(chǎn)都是可以使用TA平替UseStaticFiles的,因此在了解了TA的優(yōu)勢后 建議升級到9.0的小伙伴都使用TA平替UseStaticFiles!

既有缺陷

通常,在我們既有的NETCore項目中,我們都是使用UseStaticFiles中間件來提供靜態(tài)資產(chǎn),不過TA存在以下的一些缺陷:

  • 缺乏靜態(tài)資源的傳輸壓縮 (當(dāng)然,可以搭配壓縮中間件,或者容器壓縮(如IIS動態(tài)壓縮))
  • 使用ETag進(jìn)行低效緩存(依賴于文件修改時間戳,因此內(nèi)容不變時間戳變更將會導(dǎo)致重新加載)
  • 缺乏指紋識別(瀏覽器可能會緩存和重復(fù)使用舊版本的資產(chǎn),從而導(dǎo)致應(yīng)用更新后出現(xiàn)不一致,影響用戶體驗)

解決問題

MapStaticAssets旨在解決上述UseStaticFiles存在的一些缺陷:

  • 為應(yīng)用中的所有資產(chǎn)生成時間壓縮:
  • 在開發(fā)期間 gzip,在發(fā)布期間 gzip + brotli
  • 所有資產(chǎn)都經(jīng)過壓縮,目標(biāo)是將資產(chǎn)大小降到最低。
  • 基于內(nèi)容的 ETags:每個資源的 Etags 都是內(nèi)容的 SHA-256 哈希的 Base64 編碼字符串。 這可確保瀏覽器僅在文件內(nèi)容發(fā)生更改時重新下載文件。
  • 指紋識別資源,通過資源唯一標(biāo)識,可以防止瀏覽器重復(fù)使用舊版本。當(dāng)應(yīng)用程序更新時,指紋會發(fā)生變化,從而確??蛻舳耸冀K收到最新的資產(chǎn)。

MapStaticAssets內(nèi)部的請求管道中TA做了下面這些事:

  • 設(shè)置 ETag 和 Last-Modified 標(biāo)頭。
  • 設(shè)置緩存標(biāo)頭。
  • 使用 Caching Middleware。
  • 如果可能,提供壓縮的靜態(tài)資產(chǎn)。

性能提升

下表顯示了默認(rèn)的 Razor Pages 模板中 CSS 和 JS 文件的原始大小和壓縮大小:

文件原始壓縮%縮減
bootstrap.min.css16317.589.26%
jquery.js89.62868.75%
bootstrap.min.js78.52074.52%
總計331.165.580.20%

在使用Blazor開發(fā)業(yè)務(wù)系統(tǒng)時將節(jié)省大量傳輸寬帶,極大的提升加載速度

不可替部分

當(dāng)然UseStaticFiles仍然有TA不可替代的部分,比如虛擬文件提供者(如,嵌入的資產(chǎn),其他磁盤路徑資源,或網(wǎng)絡(luò)資源等)

比如資源是嵌入到程序集的情況下你仍然必須使用:

var embeddedFileProvider = new EmbeddedFileProvider(typeof(ISetting).Assembly, "Biwen.Settings");
app.UseStaticFiles(new StaticFileOptions
{
    FileProvider = embeddedFileProvider,
    OnPrepareResponse = ctx =>
    {
        ctx.Context.Response.Headers.Append("Cache-Control", "public,max-age=3600");
    }
});

結(jié)論

強(qiáng)烈建議在可替換UseStaticFiles()的情況下使用MapStaticAssets()

到此這篇關(guān)于ASP.NET Core 9.0 中新增的MapStaticAssets() 中間件的文章就介紹到這了,更多相關(guān)ASP.NET Core 中間件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • asp.net 頁面?zhèn)髦档膸讉€方法

    asp.net 頁面?zhèn)髦档膸讉€方法

    在網(wǎng)頁應(yīng)用程序的開發(fā)中,頁面之間的傳值應(yīng)該是最常見的問題了。
    2009-11-11
  • .NET6自定義WebAPI過濾器

    .NET6自定義WebAPI過濾器

    這篇文章介紹了.NET6自定義WebAPI過濾器的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-12-12
  • asp.net中List的使用方法

    asp.net中List的使用方法

    .net真是方便,這幾天幫朋友寫了個小軟件,用它還真感覺輕松自在,很稱手,自帶的類庫既豐富又實用
    2008-10-10
  • 詳解Func<T>與Action<T>區(qū)別

    詳解Func<T>與Action<T>區(qū)別

    本文主要介紹Func<T>和Action<T>的用法以及他們之間的區(qū)別,希望對大家有所幫助
    2016-11-11
  • ASP.NET MVC API 接口驗證的示例代碼

    ASP.NET MVC API 接口驗證的示例代碼

    本篇文章主要介紹了ASP.NET MVC API 接口驗證的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-10-10
  • GridView多層嵌套和折疊與展開(修改適合自己使用)

    GridView多層嵌套和折疊與展開(修改適合自己使用)

    這個功能的GridView多層嵌套沒有問題,因為已經(jīng)做了無限次數(shù),但是折疊與展開的功能,卻花上不少時間(網(wǎng)上找資料),雖找到資料可參考,還是了解明它,并修改適合自己程序使用,感興趣的朋友可以了解下
    2013-01-01
  • ASP.NET操作EXCEL的總結(jié)篇

    ASP.NET操作EXCEL的總結(jié)篇

    今年有個系統(tǒng)的部分EXCEL的操作也讓我做,順便結(jié)合之前操作EXCEL的經(jīng)驗作一下總結(jié),可能也算不上什么,對于絕大多數(shù)來說也沒什么技術(shù)含量,網(wǎng)上一搜一大把,但我想還是有必要總結(jié)一下
    2011-02-02
  • asp.net 存儲過程調(diào)用

    asp.net 存儲過程調(diào)用

    調(diào)用存儲過程,但無返回值 調(diào)用存儲過程,返回普通值 調(diào)用存儲過程,返回數(shù)據(jù)集的實現(xiàn)代碼。
    2009-07-07
  • asp.net下大文件上傳知識整理

    asp.net下大文件上傳知識整理

    asp.net下大文件上傳知識整理...
    2007-03-03
  • ASP.NET session.timeout設(shè)置案例詳解

    ASP.NET session.timeout設(shè)置案例詳解

    這篇文章主要介紹了ASP.NET session.timeout設(shè)置案例詳解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08

最新評論

阿拉善盟| 长泰县| 香河县| 阜阳市| 县级市| 嘉兴市| 普兰县| 板桥市| 赤峰市| 昔阳县| 辽宁省| 怀来县| 玉田县| 柳林县| 板桥市| 远安县| 寿宁县| 梁山县| 济南市| 沙湾县| 万源市| 乌拉特中旗| 长沙县| 澄迈县| 登封市| 敦化市| 南涧| 巍山| 辰溪县| 沭阳县| 凤山县| 通化市| 潢川县| 两当县| 建瓯市| 绥宁县| 邻水| 台中县| 二连浩特市| 岳普湖县| 涟源市|