我已将asp:ScriptManager
控件替换为ajaxToolkit:ToolkitScriptManager
,其属性为CombineScripts="true"
。
现在,当我查看HTML页面的来源时,会有新的脚本标记:
<script src="/MyPage.aspx?_TSM_HiddenField_=ctl00__pageBody_asScript_tscAjaxScripts_HiddenField&_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.axd
和ScriptResource.axd
个链接?
答案 0 :(得分: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
Slider的SliderBehavior.js脚本 使用相当模糊的功能启用 由PerformSubstitution属性 允许的WebResource属性 &lt;%= WebResource / ScriptResource%&gt;标签 嵌入JS文件并获取 在脚本发送到之前已解决 浏览器。这种行为不是 目前支持 ToolkitScriptManager
没有神奇的旗帜你可以打开以完全摆脱这些文件。使用ToolKitScriptManager的优点是它可以减少页面所需的资源数量,从而提高性能。 Webresource.axd和Scriptresouce.axd文件由整个应用程序使用,而不仅仅是AjaxControlToolkit。我的建议是使用像Fiddler这样的程序来查看Scriptresource.axd和Webresource.axd实际上从哪里获取和工作的资源。
答案 1 :(得分:1)
在这种情况下,通过设置CombineScripts="true"
ajaxToolkit:ToolkitScriptManager
意味着这将合并该页面上ajax控件使用的所有脚本文件,并将以下面的形式加载组合脚本 -
<script src="/MyPage.aspx?_TSM_HiddenField_=ctl00__pageBody_asScript_tscAjaxScripts_HiddenField&_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.js
和MicrosoftAjaxWebForms.debug.js
。
您可以通过梳理它们来为Microsoft Ajax发出单个请求。
您可以明确使用<CompositeScript>
代码,并指定MicrosoftAjax.js
,Webform.js
和MicrosoftAjaxWebForms.debug.js
将它们合并到一个请求中。
通过这种方式,您将只看到两个JS请求,一个用于该页面上的Ajax控件的组合脚本,另一个用于组合脚本MicrosoftAjax js
答案 2 :(得分:0)
如果您使用的是.NET 4.0,则可以使用scriptmanager上的enablecdn属性,它可以从Microsoft的CDN提供所需的JavaScript代码。
如果没有,您仍然可以将它们合并为Scott Hanselman describes here。您还可以更进一步,使用HTTP模块/过滤器将这些脚本(WebResource.axd,ScriptResource.axd)组合成2或3个脚本,但是,它需要广泛的ASP.NET基础知识;或者,您可以在应用程序中打破Microsoft Ajax方法调用(这是因为UpdatePanel用于更新页面的一部分等的奇特机制......)
答案 3 :(得分:0)
我为此编写了一个简单的处理程序,似乎工作得很好,但它适用于ASP.NET MVC,但它也不应该很难使其适用于webforms。我把它放在github上:https://github.com/mastoj/SimpleCompression。
我的解决方案的好处是: