最新国产好看的视频,伊人天堂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低效緩存和缺乏指紋識別,它通過生成時間壓縮、基于內容的ETags和指紋識別來提升性能,感興趣的朋友一起看看吧

前言

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

既有缺陷

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

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

解決問題

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

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

MapStaticAssets內部的請求管道中TA做了下面這些事:

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

性能提升

下表顯示了默認的 Razor Pages 模板中 CSS 和 JS 文件的原始大小和壓縮大?。?/p>

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

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

不可替部分

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

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

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");
    }
});

結論

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

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

相關文章

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

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

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

    .NET6自定義WebAPI過濾器

    這篇文章介紹了.NET6自定義WebAPI過濾器的方法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    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 接口驗證的示例代碼,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-10-10
  • GridView多層嵌套和折疊與展開(修改適合自己使用)

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

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

    ASP.NET操作EXCEL的總結篇

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

    asp.net 存儲過程調用

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

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

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

    ASP.NET session.timeout設置案例詳解

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

最新評論

大英县| 茌平县| 安阳县| 湟中县| 西乌珠穆沁旗| 太谷县| 宁波市| 商丘市| 于都县| 新建县| 霸州市| 临潭县| 屏东市| 昌都县| 增城市| 怀化市| 石狮市| 定州市| 美姑县| 河南省| 博客| 深圳市| 土默特右旗| 瓦房店市| 基隆市| 衡山县| 前郭尔| 利津县| 鄂托克旗| 江北区| 乐清市| 绵竹市| 尚志市| 海口市| 长白| 柳河县| 孟州市| 都兰县| 安国市| 佳木斯市| 咸阳市|