合并脚本 - 工具脚本管理器 vs 3.5中的复合脚本

4

我一直在我的网站上使用AjaxControlToolkit中包含的ToolScriptManager工具。该工具有一个CombineScript属性,告诉脚本管理器将ajax控件所需的脚本合并到一个单独的脚本文件中。 然而,自从3.5版本以来,标准的ScriptManager已经支持了"<CompositScripts>",您可以将(手动选择的)脚本合并到一个文件中。

为了最大化性能,我应该继续使用ToolScriptManager还是使用CompositScript?

2个回答

3
这两个工具本质上是达成同一目标的两种不同方法。
工具包中的脚本管理器旨在合并整个站点上可用的每个JS文件。好处是很容易设置-你替换ScriptManager然后就可以了。缺点是,除非每个页面使用完全相同的脚本集,否则您将迫使用户下载过多的脚本代码。如果您的主页使用脚本A、B、C、D,而内部页面使用A、B、C、D、E,则当用户访问内部页面时,他们将不得不重新下载A、B、C、D的内容,因为它将成为不同组合脚本资源的一部分。
CompositeScript功能旨在非常挑剔地选择要包含的脚本。开发人员必须分析每个页面上使用的脚本,并将它们添加到组合脚本中。在前面的例子中,您可以选择(最好是在母版页中)将A、B、C、D组合起来,但不包括E。然后您的用户会访问主页,并在一次下载中下载A、B、C、D。然后他们继续访问内部页面,浏览器缓存中已经有了A-D,只需要下载E。
因此,像许多事情一样,这取决于您的架构以及您能够投入多少精力。这两种方法都似乎是极端的方法,一种是默认包含,另一种是默认排除,并且似乎没有任何中间路径。(我多么希望有一个。)
编辑:这个答案有什么不可接受的地方需要被downvote吗?请在评论中解释一下。

谢谢!(我希望不是我给它投了反对票..???) 实际上,我们选择了第三个选项,即手动将所有页面所需的脚本组合成一个脚本文件(A、B、C、D、E)。这意味着用户只需要进行一次单个脚本请求。结果发现,延迟比传输时间更重要,特别是对于亚洲地区的用户。因此,将请求量减少到最低限度对我们来说是最好的选择。 - Bjorn
ASP.NET Ajax - 脚本合并和将ScriptResource.axd移动到静态脚本 http://www.hanselman.com/blog/ASPNETAjaxScriptCombiningAndMovingScriptResourceaxdsToStaticScripts.aspx - user423430

0

我有一种感觉,ScriptManager的Composite Scripts是用于多个js文件的使用。

<asp:ScriptManager ID="ScriptManager1" runat="server">
    <CompositeScript>
        <Scripts>
            <asp:ScriptReference Path="~/Scripts/Script1.js" />
            <asp:ScriptReference Path="~/Scripts/Script2.js" />
            <asp:ScriptReference Path="~/Scripts/Script3.js" />
        </Scripts>
    </CompositeScript>
</asp:ScriptManager>

虽然 ToolScriptManager 可以合并自动生成的资源脚本(以及其他指定的脚本:在 asp.net ajax 工具包中合并脚本),但 ScriptManager 允许您选择哪些脚本文件要合并,这取决于您网站对各种文件的使用情况,可以减少用户下载次数。

我建议继续使用 ToolkitScriptManager。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接