3

我已经用属性替换了我的asp:ScriptManager控件。ajaxToolkit:ToolkitScriptManagerCombineScripts="true"

现在当我查看 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链接?

4

4 回答 4

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 脚本使用 WebResource 属性的 PerformSubstitution 属性启用的相当模糊的功能,该功能允许 <%= WebResource/ScriptResource %> 标记嵌入到 JS 文件中,并在脚本发送到浏览器之前得到解析。ToolkitScriptManager 当前不支持此行为

没有可以打开的神奇标志来完全摆脱这些文件。使用 ToolKitScriptManager 的优势在于它将减少页面所需的资源数量,从而提高性能。Webresource.axd 和 Scriptresouce.axd 文件被整个应用程序使用,而不仅仅是 AjaxControlToolkit。我的建议是使用像 Fiddler 这样的程序来查看 Scriptresource.axd 和 Webresource.axd 实际提取的资源并从那里工作。

于 2011-01-12T21:26:16.220 回答
1

在这种情况下,通过设置手段CombineScripts="true"ajaxToolkit:ToolkitScriptManager这将组合该页面上 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.js并且MicrosoftAjaxWebForms.debug.js在单独的请求中。您可以通过组合它们对 Microsoft Ajax 发出单个请求。

您可以<CompositeScript>显式使用 tag 并指定MicrosoftAjax.jsWebform.js并将MicrosoftAjaxWebForms.debug.js它们组合在一个请求中。这样,您将只看到两个对 JS 的请求,一个用于该页面上 Ajax 控件的组合脚本,另一个用于组合脚本 MicrosoftAjax js

于 2012-04-07T21:47:28.197 回答
0

如果您使用的是 .NET 4.0,则可以使用 scriptmanager 上的 enablecdn 属性,它提供来自 Microsoft 的 CDN 的所需 JavaScript 代码。

如果没有,您仍然可以按照 Scott Hanselman在这里描述的那样合并它们。您还可以更进一步,使用 HTTP 模块/过滤器将这些脚本(WebResource.axd、ScriptResource.axd)组合成 2 或 3 个,但是,它需要广泛的 ASP.NET 基础知识;否则,您可能会破坏应用程序中的 Microsoft Ajax 方法调用(这是因为 UpdatePanel 使用这些花哨的机制来更新页面的一部分,等等......)

于 2011-01-05T07:39:27.277 回答
0

我为此编写了一个简单的处理程序,它似乎工作正常,但它适用于 ASP.NET MVC,但让它也适用于 webforms 应该不难。我把它放在github上:https ://github.com/mastoj/SimpleCompression 。

我的解决方案的优点是:

  • 您不需要两份脚本;也就是原版的缩小版。
  • 如果需要,您可以更改压缩引擎。
  • 这些文件被即时压缩并放入 webb 服务器和客户端的缓存中(您可以更新版本设置以强制客户端再次下载脚本)。
  • 这些文件是即时组合的。
  • 合并和压缩的文件对原始文件具有文件依赖性,因此如果您出于某种原因需要在 prod 中测试某些内容(但不要这样做:)),它们会被重新压缩和合并。
  • 而且它很容易使用,至少对于 MVC 来说是这样。
于 2011-01-12T21:47:20.603 回答