[AJAX]ToolkitScriptManager
在開發AJAX網頁的時候,頁面上一定要有一個ScriptManager,才能正常運作。
然而在AJAX Control Toolkit裡面,有一個ToolkitScriptManager,這東西主要是繼承ScriptManager來的。
使用的方式,與ScriptManager一模一樣,只需要把原本放ScriptManager的tag改為ToolkitScriptManager即可。
(記得要更新.net framework sp1)
然而,ToolkitScriptManager與ScriptManager差異在哪,
AJAX Control Toolkit在一開始設計的時候,為了程式碼維護的便利性,每個control與Extender各自對應的JavaScript都是分開的檔案,內嵌在dll裡面。
這樣一來,當網頁被瀏覽時,Browser讀到include相關的JS時,會對server發出所需要的Request,
而Browser在下載檔案時,通常是採用平行下載,但是js檔會有順序性問題,為了確保在同一時間裡,只有一個js檔被載入記憶體中,js檔會一個一個依序下載。
這樣一來,如果要求的js檔越多時,流量就會變大,網頁的performance就會下降。
也就是章立民老師文章中提及的「為了讓JavaScript檔案能夠先壓縮再下載,以便提昇下載效率並降低請求(Request)次數,請大家在設計ASP.NET AJAX網頁時,應該盡量使用ToolkitScriptManager來取代ScriptManager。」
ToolkitScriptManager就是為了改善這個問題而產生,用來強化原本的ScriptManager,會動態的把幾個js檔合併成單一檔案。
如果Browser有支援壓縮功能,會在server端先壓縮才開始下載。(TooliktScriptManager支援Gzip與DEFLATE壓縮演算法)
這種方式有點像把瑣碎的圖檔都放在同一張圖裡面,再透過css的絕對位置去切圖顯示,以降低Request的數目。
還有另外一個最大的好處是,有要透過ScriptManager註冊的javascript,原本都要在最後一行加上
if (typeof(Sys) !== "undefined") Sys.Application.notifyScriptLoaded();
透過ToolkitScriptManager註冊的話,則可以省略掉這一行(喔耶!不用再怕漏掉了!),ToolkitScriptManager會自動call Sys.Application.notifyScriptLoaded;
效率的差異,在章立民老師的網站上有詳細的影片,在MIS2000 Lab老師的Blog也有比較。
參考來源:
- 章立民老師的ToolkitScriptManager VS ScriptManager,效率差異的影片
- MIS2000 Lab老師的文章,AJAX Control Toolkit 3.5的ToolkitScriptManager 與VS 2008內建的ScriptManager
想要瞭解更詳細的話,可以去購買章立民老師的ASP.NET 3.5 AJAX用戶端篇。
blog 與課程更新內容,請前往新站位置:http://tdd.best/