我正在公司网站上工作,其中AJAX控件与Telerik ASP.NET控件一起使用。虽然这在功能方面没有任何实际问题,但整体性能存在问题。
为了防止AJAX工具包脚本管理器对它支持的每个组件上的所有脚本进行多次调用,我们将CombineScripts标志设置为true,将EnablePartialRendering标志设置为true并指定CombineScriptsHandlerUrl的URL。
这很有效,因为生成的AJAX组件的脚本显着减少以及相应的往返。但是,我们发现Telerik Controls在此设置方面存在问题。更具体地说,这个特定站点(TelerikHTMLChart控制)
经过进一步研究,确认必须将CombineScripts标志设置为false才能使Telerik控件以此容量使用AJAX控件。
显然,当您进行定位以增加网站整体响应时间时,这不是最理想的选择。
是否有任何人遇到此问题能够获得合理的解决方案,使AJAX和Telerik ASP.NET组件能够在不降低性能的情况下快速合作?
答案 0 :(得分:1)
感谢您的响应rdmptn,但在等待某人以适当且可接受的解决方案做出回应的过程中;我设法找出问题的解决方案。所以我发布这个给那些可能也有性能问题的人,并且需要一个可行的解决方案。
Rdmptn已经做了很好的工作,提出了解决这个问题的方法。事实上,问题的原因实际上已经说明了。但是,还有另一种方法可以将CombineScripts标志设置为true来实现AJAX ToolkitScriptManager,以减轻过多的往返次数,并以高效的方式使用Telerik控件。我不得不尝试一下努力找到这个解决方案,所以这可能会对其他人有所帮助。 Telerik支持人员无法提供此解决方案,因此我也将其提供给他们。
首先,您必须确定特定方案所需的Telerik脚本引用。您可以通过以下链接获取此信息:http://www.telerik.com/help/aspnet-ajax/introduction-disabling-embedded-resources.html
然后在您的网站上找到您需要的Telerik控件。您将注意到此链接中提供的选项重新显示rdmptn提供的第3个项目符号点。但是,我描述的方法不需要对web.config进行任何修改,也不使用CDN引用。我们选择退出CDN参考的决定是通过依赖其他网站来避免进一步的性能下降。
一旦确定了所需的控件,就可以从提供给AJAX ToolkitScript Manager中的标签的链接中复制并粘贴ScriptReferences。在我的例子中,结果代码如下所示:
<ajaxToolkit:ToolkitScriptManager ID="ToolkitScriptManager1" ScriptMode="Release" runat="server" EnablePartialRendering="true"
CombineScripts="true" CombineScriptsHandlerUrl="~/AjaxScriptMergeHandler.ashx">
<CompositeScript>
<Scripts>
<asp:ScriptReference Path="~/Scripts/Common/Core.js" />
<asp:ScriptReference Path="~/Scripts/Common/jQuery.js" />
<asp:ScriptReference Path="~/Scripts/Common/jQueryPlugins.js" />
<asp:ScriptReference Path="~/Scripts/Common/HTML5UI/html5/core.js" />
<asp:ScriptReference Path="~/Scripts/Common/HTML5UI/html5/dataviz/core.js" />
<asp:ScriptReference Path="~/Scripts/Common/HTML5UI/Data/html5/data.js" />
<asp:ScriptReference Path="~/Scripts/Common/HTML5UI/html5/userevents.js" />
<asp:ScriptReference Path="~/Scripts/Common/HTML5UI/DataViz/html5/dataviz/themes.js" />
<asp:ScriptReference Path="~/Scripts/Common/HTML5UI/DataViz/html5/dataviz/chart.js" />
<asp:ScriptReference Path="~/Scripts/Common/HTML5UI/DataViz/html5/dataviz/svg.js" />
<asp:ScriptReference Path="~/Scripts/Common/HTML5UI/DataViz/html5/dataviz/vml.js" />
<asp:ScriptReference Path="~/Scripts/HtmlChart/RadHtmlChart.js" />
</Scripts>
</CompositeScript>
</ajaxToolkit:ToolkitScriptManager>
这种方法允许AJAX ToolScriptManager明确地最小化支持您在CombineScripts标记设置为true的站点(或网页)中实际使用的组件所需的脚本数量,同时仅加载应用程序中所需的那些脚本要为Telerik控件加载。
不再被设置为错误,因为对于所指出的不兼容问题经常做出反应;同时只加载所需的脚本以支持您的Telerik控件。 VOILA!
希望这些信息可以帮助他人并节省他们浪费时间来解决问题的时间。
再次感谢rdmptn发布您的建议!
答案 1 :(得分:0)
我不知道有办法做到这一点。 AjaxControlToolkit破坏了与<asp:ScriptManager>
的兼容性。 Telerik控件是基于vanilla MS AJAX框架构建的,因此,由于2013年冬季AjaxControlToolkit的变化,两个套件之间没有兼容性。
因此,需要考虑的想法是:
删除AjaxControlToolkit控件以支持Telerik控件
生活的请求数量超出了您想要的数量
尝试从他们的CDN下载Telerik控件的组合脚本并在页面中引用它,然后为它们禁用嵌入式脚本。您可以使用RadSCriptManager启用它,启用其CDN并在web.config中将Telerik.ScriptManager.TelerikCdn.CombinedScript appSettings键设置为true
如果您只需要来自Telerik的HtmlChart,请尝试使用Kendo Chart小部件。它们都是相同的,但是Kendo widged是纯客户端代码,与MS AJAX,AjaxControlToolkit或ASP.NET AJAX套件的UI无关