2010-11-30 58 views
3

我已將asp:ScriptManager控件替換爲ajaxToolkit:ToolkitScriptManager,屬性爲CombineScripts="true"ASP.NET腳本合併

現在,當我查看HTML頁面的源,有新的腳本:

<script src="/MyPage.aspx?_TSM_HiddenField_=ctl00__pageBody_asScript_tscAjaxScripts_HiddenField&amp;_TSM_CombinedScripts_=%3b%3bAjaxControlToolkit%2c+Version%3d3.0.20820.30277%2c+Culture%3dneutral%2c+PublicKeyToken%3d28f01b0e84b6d53e%3aen-US%3a06e896ab-1f8c-4bcb-9cc4-0200671cba8a%3ae2e86ef9%3a1df13a87%3ac4c00916%3aaf22e781%3a9ea3f0e2%3ac7c04611%3acd120801%3a3858419b%3a96741c43%3a38ec41c0" /> 

而且還是舊腳本標籤:WebResource.axd和幾個ScriptResource.axd

如何刪除WebResource.axdScriptResource.axd鏈接從頁面?

+0

您是否按照此處的建議? http://stackoverflow.com/questions/626659/combine-scripts-in-asp-net-ajax-toolkit – 2010-11-30 14:31:36

+0

我剛讀過它,但沒有答案我該如何刪除WebResource.axd和ScriptResource.axd鏈接 – ihorko 2010-11-30 14:51:22

回答

0

我爲此編寫了一個簡單的處理程序,它似乎工作正常,但它適用於ASP.NET MVC,但它不應該很難讓它適用於webforms。我把它放在github上:https://github.com/mastoj/SimpleCompression

我的解決方案的好的部分是:

  • 你不需要你的腳本的兩份;也就是與原文縮小版本。
  • 如果需要,您可以更改壓縮引擎。
  • 這些文件被即時壓縮並放入webb服務器和客戶端的緩存中(您可以更新版本設置以強制客戶端再次下載腳本)。
  • 這些文件即時合併。
  • 組合和壓縮的文件對原始文件具有文件依賴性,因此如果由於某種原因需要在prod中測試某些內容(但不這樣做:)),它們將被重新壓縮和合並。
  • 而且它很容易使用,至少對於MVC來說。
0

如果您使用.NET 4.0,則可以在腳本管理器上使用enablecdn屬性,並且它從Microsoft的CDN提供所需的JavaScript代碼。

如果不是,您仍然可以將它們合併爲Scott Hanselman describes here。您還可以更進一步,並使用HTTP模塊/過濾器將這些腳本(WebResource.axd,ScriptResource.axd)合併爲2或3個腳本,但它需要廣泛的ASP.NET基礎知識;否則,你可以在應用打破微軟的Ajax方法調用(這是因爲那些花哨的UpdatePanel機制用於更新頁面的部分,等...)

1

有跡象表明,這樣做不是AjaxControlToolkit的一些組件支持組合腳本。 來源:http://blogs.msdn.com/b/delay/archive/2007/06/11/script-combining-made-easy-overview-of-the-ajax-control-toolkit-s-toolkitscriptmanager.aspx

滑塊的SliderBehavior.js腳本 使用一個相當不起眼的功能啓用 由 的WebResource屬性,允許 <%= WebResource/ScriptResource%>標籤 被嵌入在PerformSubstitution財產JS文件,並在腳本發送到 瀏覽器之前得到 解決。此行爲不是目前 ToolkitScriptManager

支持 有沒有,你可以打開到完全擺脫這些文件的神奇標誌。使用ToolKitScriptManager的好處是可以減少頁面需要的資源數量,從而提高性能。 Webresource.axd和Scriptresouce.axd文件被整個應用程序使用,而不僅僅是AjaxControlToolkit。我的建議是使用像Fiddler這樣的程序來查看Scriptresource.axd和Webresource.axd實際上在哪裏引入和工作的資源。

1

在這種情況下通過設置ajaxToolkit:ToolkitScriptManagerCombineScripts="true"意味着這將結合所有的頁面上使用的AJAX控件的腳本文件,它會在加載以下形式 -

<script src="/MyPage.aspx?_TSM_HiddenField_=ctl00__pageBody_asScript_tscAjaxScripts_HiddenField&amp;_TSM_CombinedScripts_=%3b%3bAjaxControlToolkit%2c+Version%3d3.0.20820.30277%2c+Culture%3dneutral%2c+PublicKeyToken%3d28f01b0e84b6d53e%3aen-US%3a06e896ab-1f8c-4bcb-9cc4-0200671cba8a%3ae2e86ef9%3a1df13a87%3ac4c00916%3aaf22e781%3a9ea3f0e2%3ac7c04611%3acd120801%3a3858419b%3a96741c43%3a38ec41c0" /> 

合併腳本但在ScriptResource.axd文件中,它將在單獨的請求中加載Microsoft Ajax庫文件,如 - MicrosoftAjax.debug.jsMicrosoftAjaxWebForms.debug.js。 您可以通過梳理它們來爲Microsoft Ajax提出單個請求。

可以明確地使用<CompositeScript>標籤,並指定MicrosoftAjax.jsWebform.jsMicrosoftAjaxWebForms.debug.js他們在一個請求相結合。 通過這種方式,您將只能看到兩個JS請求,一個用於該頁面上的Ajax控件組合腳本,另一個用於組合腳本MicrosoftAjax js