demoshop

demo, trying to be the best_

官方網站
http://www.codeplex.com/aspnet/Release/ProjectReleases.aspx?ReleaseId=13356

現在因為AJAX和jQuery的火紅,很多web developer都察覺到了應該要把畫面的顯示還給前端處理,所以一個網站應用js技術的次數或處理就越來越多了,如果你一次有許多的js要載入那是會造成許多的web GET對於速度還是會有些許的影響,前些日子BOSS給了我一篇電子書介紹.NET framework 3.5 SP1 新增的玩意,我發現了一個ScriptReferenceProfiler的元件他可以幫助我們把頁面上的js包起來一次下載。

首先當然是先去下載ScriptReferenceProfiler回來阿,直接放到你網頁下面的Bin資料夾就會自動參考了,demo用了一頁很簡單的ajaxToolkits來作範例,先來看看直接測試的web GET有幾次


看完了以後我們要直接把這元件註冊到頁面上(當然你也可以註冊到web.config內)。  放在HTML標籤上吧

<%@ register assembly="ScriptReferenceProfiler" namespace="ScriptReferenceProfiler" tagprefix="cc1" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

然後我們移動至頁面的最下面加上<cc1:ScriptReferenceProfiler runat="server" />

<cc1:ScriptReferenceProfiler runat="server" />
</form>
</body>
</html>

 


回到頁面上按F5(重新整理)你會發現頁面最下面多了一堆玩意兒

把他們全部複製下來


回到MasterPage在ScriptManager裡面加上些玩意

<asp:ScriptManager ID="ScriptManager1" runat="server">
<CompositeScript>
<Scripts>
    <asp:ScriptReference name="MicrosoftAjax.js"/>
 <asp:ScriptReference name="MicrosoftAjaxWebForms.js"/>
 <asp:ScriptReference name="AjaxControlToolkit.Common.Common.js" assembly="AjaxControlToolkit, Version=3.0.20820.16598, Culture=neutral, PublicKeyToken=28f01b0e84b6d53e"/>
 <asp:ScriptReference name="AjaxControlToolkit.Common.DateTime.js" assembly="AjaxControlToolkit, Version=3.0.20820.16598, Culture=neutral, PublicKeyToken=28f01b0e84b6d53e"/>
 <asp:ScriptReference name="AjaxControlToolkit.Compat.Timer.Timer.js" assembly="AjaxControlToolkit, Version=3.0.20820.16598, Culture=neutral, PublicKeyToken=28f01b0e84b6d53e"/>
 <asp:ScriptReference name="AjaxControlToolkit.Animation.Animations.js" assembly="AjaxControlToolkit, Version=3.0.20820.16598, Culture=neutral, PublicKeyToken=28f01b0e84b6d53e"/>
 <asp:ScriptReference name="AjaxControlToolkit.ExtenderBase.BaseScripts.js" assembly="AjaxControlToolkit, Version=3.0.20820.16598, Culture=neutral, PublicKeyToken=28f01b0e84b6d53e"/>
 <asp:ScriptReference name="AjaxControlToolkit.Animation.AnimationBehavior.js" assembly="AjaxControlToolkit, Version=3.0.20820.16598, Culture=neutral, PublicKeyToken=28f01b0e84b6d53e"/>
 <asp:ScriptReference name="AjaxControlToolkit.PopupExtender.PopupBehavior.js" assembly="AjaxControlToolkit, Version=3.0.20820.16598, Culture=neutral, PublicKeyToken=28f01b0e84b6d53e"/>
 <asp:ScriptReference name="AjaxControlToolkit.Common.Threading.js" assembly="AjaxControlToolkit, Version=3.0.20820.16598, Culture=neutral, PublicKeyToken=28f01b0e84b6d53e"/>
 <asp:ScriptReference name="AjaxControlToolkit.Calendar.CalendarBehavior.js" assembly="AjaxControlToolkit, Version=3.0.20820.16598, Culture=neutral, PublicKeyToken=28f01b0e84b6d53e"/>
</Scripts>
</CompositeScript>
</asp:ScriptManager>

<Script>包住的就是你剛複製的部份全貼上去阿


然後我們再看看,相同的頁面

GET是不是明顯少了許多阿!!


But!! 注意But它又來了,這玩意是在.NET Framework 3.5 SP1才有的東西,或許你沒升級到那麼新,或許案子就是只能跑在2.0 那搞P勒,簡單有個更簡單的解決方法通常有用微軟的AJAX的應該會有有抓AJAX Toolkits吧早在不知道那一版的AJAX Toolkits就想到這種瘋狂要求的笨問題了,所以他有把原生的ScriptManager包裝成ToolkitScriptManager,只要你改用ToolkitScriptManager那上面一切的步驟你都不用做...看看下圖,一樣會打包一次丟而且要做的事情還變少了


兩種方法都推薦給您,可以依照需求來使用(雖然我都直接用ToolkitScriptManager)

http://www.asp.net/learn/3.5-SP1/video-296.aspx

回應討論