首頁 »
2006/12/13

ASP.NET 2.0網頁執行管線與快取原理

您對ASP.NET 2.0網頁執行管線與快取原理是否清楚呢?祭司正在撰寫下冊ASP.NET 2.0的Cache快取機制...


節錄自【聖殿祭司的ASP.NET 2.0專家進階手冊】

  對ASP.NET有點基礎的人或多或少都聽過:「ASP.NET第一執行網頁會較慢,因為系統會執行網頁編譯動作,故會察覺到網頁有些停頓;而第二次再執行相同網頁,系統就會以編譯過的程式來回應Request,故第二次以後執行效能就會快很多。」這是大家常耳熟能詳的一個論調,相信各位應不陌生才是。   但為什麼要提這點?理由是若要解釋快取(Cache)之所以能夠加速網頁運作的原因,前提是必須要先瞭解ASP.NET執行管線是如何運行的,從ASP.NET執行過程中,剛好可以找到ASP.NET第一執行網頁會較慢,第二次以後速度較快的理由;若進一步在ASP.NET執行管線中加入快取機制時,快取會如何改變系統運作流程,進而再次加速網頁運作效能,以致快取可以比單純編譯過後的網頁效能還快。   故祭司將介紹解釋下面兩個東西,並且加以比較,各位就會明白為什麼快取的對網頁執行速度的增強。 1.ASP.NET執行管線運作原理。 2.ASP.NET快取運作原理。   下圖1為ASP.NET執行管線的流程圖(沒有加入快取設定),當使用者第一次執行網頁Page.aspx時,其運作過程為:(1)Browser瀏覽器發出第一個網頁Request請求,系統首先會Parse解析網頁->(2)進而呼叫Compiler編輯程式->(3)將網頁程式轉換為Assembly Intermediate Language->(4)最後系統再經由JIT編譯器將Assembly IL轉換成特定CPU類型(如x86或Mac)所能執行的指令->(5)Web Server 將HTML頁面回傳給Browser瀏覽器,並顯示最後結果在畫面上,如此便完成網頁執行的過程。 圖1      然而下圖2是第二次執行相同的網頁Page.aspx,系統會略過Parse解析與Compile Assembly IL兩個階段,由原來的五個執行階段減為三個,並且由於節省了兩個階段的執行工作,可以節省不少額外的時間,因此第二次以後的所有網頁Request請求,會比第一次快很多的原因在此。 圖2   

  然而雖然編譯式的網頁程式較傳統直譯式的網頁程式執行效能快,但是人類對於效能的渴望是永遠不會滿足的,那是否有辦法再進一步提升編譯後的網頁執行速度?有,答案就是使用快取(Cache)來再次縮短ASP.NET執行管線,便可以得到更短的網頁Response回應時間。   下圖3中,我們在傳統的ASP.NET網頁中加入快取機制,其第一次執行Page.aspx網頁後,便會將最終的HTML Render輸出快取在記憶體之中(圖3的第6階段);而當第二次再執行Page.aspx網頁時(圖4),整個執行過程會略過Parse、Compiler與Assembly IL三個階段,且系統連動態運算生成或資料庫存取的動作都略過,直接將快取記憶體中的HTML Render回傳給Browser瀏覽器顯示。故各位可以比較圖2與圖4,同樣是第二次以後執行的過程,前者沒有加入快取,而後者有加入快取,前者需要三個階段,後者只需二個階段,並且連Init、Load、Render的運算階段都省略了,無怪乎快取具有無與倫比的執行效能,各位應能理解了吧。 圖3 圖4

註: (1)下冊ASP.NET 2.0的新書名稱,暫訂為【聖殿祭司的ASP.NET 2.0專家進階手冊】。 (2)實際下冊章節主題會找時間公布。


關鍵字: 人類

50本ASP.NET 2.0--VB簽名書在天瓏←上一篇 │首頁│ 下一篇→Cache 2.0快取架構與快取資料自動移除架構圖
本文引用網址: