【问题标题】:How to Combine Scripts using Telerik ASP.NET with AJAX Control Toolkit如何使用 Telerik ASP.NET 和 AJAX 控制工具包组合脚本
【发布时间】:2015-02-20 14:55:38
【问题描述】:

我正在一个公司网站上工作,AJAX 控件与 Telerik ASP.NET 控件一起使用。虽然这在功能方面没有真正的问题,但整体性能却存在问题。

为了防止 AJAX 工具包脚本管理器对其支持的每个组件上的所有脚本进行多次调用,我们将 CombineScripts 标志设置为 true,将 EnablePartialRendering 标志设置为 true,并为 CombineScriptsHandlerUrl 指定一个 URL。

这非常有效,因为为 AJAX 组件生成的脚本以及相应的往返次数都大大减少了。但是,我们发现 Telerik Controls 的此设置存在问题。更具体地针对此特定站点(TelerikHTMLChart 控件)

经过进一步研究,确认必须将 CombineScripts 标志设置为 false,Telerik 控件才能以这种能力与 AJAX 控件一起工作。

当您的目标是增加网站的整体响应时间时,这显然不是最理想的选择。

遇到此问题的人是否能够为该问题找到合理的解决方案,使 AJAX 和 Telerik ASP.NET 组件能够愉快地一起运行而不会降低性能?

【问题讨论】:

    标签: asp.net performance telerik ajaxcontroltoolkit


    【解决方案1】:

    感谢您的回复 rdmptn,但在等待有人以适当且可接受的解决方案回复的过程中;我设法找出问题的解决方案。因此,我将这篇文章发布给其他可能也担心性能并需要可行的解决方案来解决问题的人。

    Rdmptn 已经做得很好,提出了解决这个问题的方法。事实上,问题的原因实际上正如已经说明的那样。但是,还有另一种方法可以实现 AJAX ToolkitScriptManager,并将 CombineScripts 标志设置为 true,以减少过多的往返,并以高效的方式使用 Telerik 控件。为了找到这个解决方案,我不得不进行一些试验,所以也许这会对其他人有所帮助。 Telerik 支持人员无法提供此解决方案,因此我也将其提供给他们。

    首先,您必须确定特定场景所需的 Telerik 脚本引用。您可以通过以下链接获取此信息:http://www.telerik.com/help/aspnet-ajax/introduction-disabling-embedded-resources.html

    然后在您的网站上找到您需要的 Telerik 控件。您会注意到此链接中提供的选项重申了 rdmptn 提供的第三个要点。但是,我描述的方法不需要对 web.config 进行任何修改,也不需要使用 CDN 引用。我们决定退出 CDN 引用是为了避免因依赖其他站点而进一步降低性能。

    确定所需的控件后,将提供的链接中的 ScriptReferences 复制并粘贴到 AJAX ToolkitScript Manager 内的标记中。就我而言,生成的代码如下所示:

    <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 控件加载。

    不再像对指出的不兼容问题的常见响应那样设置为 false;同时仅加载支持 Telerik 控件所需的脚本。瞧!

    希望这些信息可以帮助其他人,并为他们节省我们为解决问题而浪费的时间。

    再次感谢 rdmptn 提出您的建议!

    【讨论】:

    • 这就是我的想法,也许我应该更清楚:) 但是,为每个页面上的 20 个控件执行此操作可能会变得很麻烦。这就是为什么我建议您从 Telerik CDN 下载组合脚本并仅作为参考。它将为您节省大量工作,并使所有组合脚本相同,因此浏览器将更好地缓存它们,而不是因为不同的脚本组合而为每个页面使用不同的 URL。
    【解决方案2】:

    我不知道有什么方法可以做到这一点。 AjaxControlToolkit 破坏了与&lt;asp:ScriptManager&gt; 的兼容性。 Telerik 控件是基于原版 MS AJAX 框架构建的,因此由于 2013 年冬季 AjaxControlToolkit 的更改,这两个套件之间不兼容。

    因此,要考虑的想法是:

    • 删除 AjaxControlToolkit 控件以支持 Telerik 控件

    • 接受比您想要的更多的请求

    • 尝试从 Telerik 控件的 CDN 下载组合脚本并在您的页面中引用该脚本,然后为它们禁用嵌入式脚本。您可以通过使用 RadSCriptManager 启用它,启用其 CDN 并在 web.config 中将 Telerik.ScriptManager.TelerikCdn.CombinedScript appSettings 键设置为 true

    • 如果您只需要 Telerik 的 HtmlChart,请尝试使用 Kendo Chart 小部件。它们都是相同的,但 Kendo widged 是纯客户端代码,与 MS AJAX、AjaxControlToolkit 或 ASP.NET AJAX 套件的 UI 无关

    【讨论】:

      猜你喜欢
      • 2012-10-23
      • 2010-10-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-19
      相关资源
      最近更新 更多