2009-08-26 28 views
4

我一直在使用我的網站上AjaxControlToolkit中包含的toolscriptmanager。這個有一個CombineScript屬性,它告訴腳本管理員將來自ajax控件的必要腳本合併成一個腳本文件。 但是,自3.5起,標準腳本管理器支持「< CompositScripts>」,您可以將手動選擇的腳本合併到一個文件中。組合腳本 - Toolscript管理器與3.5中的CompositeScript

我應該繼續使用toolscriptmanager還是應該使用CompositScript來最大化性能?

回答

3

這兩種工具實質上是兩種不同的方法來實現相同的目標。

工具包的腳本管理器旨在將整個站點上的每個可用JS文件組合起來。這裏的好處是它很容易設置 - 你替換ScriptManager並放手。缺點是,除非每個頁面使用完全相同的一組腳本,否則您將強制用戶下載過多的腳本代碼。如果您的主頁使用腳本A,B,C,D和內部頁面使用A,B,C,D,E,那麼當用戶點擊內部頁面時,他們將不得不重新下載A,B,C的內容,D,因爲它將成爲不同的組合腳本資源的一部分。

CompositeScript功能對其包含的腳本非常挑剔。開發人員必須分析每個頁面上使用的腳本並將其添加到組合腳本中。在前面的例子中,您可以選擇(在母版頁中,最好是)A,B,C,D進行組合,而不是E.然後,用戶將點擊主頁並下載A,B,C,D一杆。然後,他們會繼續進入內部頁面,在他們的瀏覽器緩存中已經有AD,並且只需要下載E.

因此,與許多事情一樣,這取決於您的架構以及您可以付出多少努力它。這兩者似乎都是極端的方法,默認情況下包括一種,默認情況下排除,並且似乎沒有任何中間路徑。 (我多麼希望有一個。)

編輯:什麼反感這個答案,需要一個downvote?請解釋一下自己的評論。

+0

謝謝! (我希望我不是那個低估了它的人.. ???) 我們實際上已經選擇了第三個選項,將所有頁面需要的所有腳本手動合併爲一個腳本文件(A,B,C,D, E)。這意味着用戶只需執行一次單個腳本請求。結果表明延遲是一個比傳輸時間更大的問題,特別是針對亞洲用戶。所以將請求數量降到最低是我們的最佳選擇。 – Bjorn 2009-09-25 06:27:06

+0

ASP.NET Ajax - 將ScriptResource.axd組合並移動到靜態腳本的腳本http://www.hanselman.com/blog/ASPNETAjaxScriptCombiningAndMovingScriptResourceaxdsToStaticScripts.aspx – user423430 2012-01-11 20:40:08

0

我感覺ScriptManager的複合腳本是用於多重js文件的。

<asp:ScriptManager ID="ScriptManager1" runat="server"> 
    <CompositeScript> 
     <Scripts> 
      <asp:ScriptReference Path="~/Scripts/Script1.js" /> 
      <asp:ScriptReference Path="~/Scripts/Script2.js" /> 
      <asp:ScriptReference Path="~/Scripts/Script3.js" /> 
     </Scripts> 
    </CompositeScript> 
</asp:ScriptManager> 

雖然ToolScriptManager組合了自動生成的資源腳本。 (以及其他指定的腳本:combine scripts in asp.net ajax toolkit

ScriptManager將允許您選擇和選擇哪個腳本文件合併,這取決於您對各種文件的站點使用情況,將允許更少的用戶下載。

我會繼續使用ToolkitScriptManager。