[AJAX]ToolkitScriptManager

  • 21905
  • 0

[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也有比較。

參考來源:

  1. 章立民老師的ToolkitScriptManager VS ScriptManager效率差異的影片
  2. MIS2000 Lab老師的文章,AJAX Control Toolkit 3.5的ToolkitScriptManager 與VS 2008內建的ScriptManager

 

想要瞭解更詳細的話,可以去購買章立民老師的ASP.NET 3.5 AJAX用戶端篇


blog 與課程更新內容,請前往新站位置:http://tdd.best/