65.9K
CodeProject 正在变化。 阅读更多。
Home

合并 Ajax axd 文件以提高性能

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.20/5 (2投票s)

2009 年 7 月 14 日

CPOL

1分钟阅读

viewsIcon

24353

如何合并 Ajax 和文件以提高性能

如果我们使用 Ajax 或 Ajax 相关控件,就会发现会向服务器发起大量的脚本相关请求。浏览器可以并发请求两个资源到服务器。例如,浏览器可以请求一张图片,同时图片加载时,浏览器可以请求一个 CSS 文件。但在 JavaScript 的情况下,浏览器无法请求两个文件。当浏览器请求一个脚本文件时,它会停止对同一服务器的任何其他请求。

当你使用 Ajax 或 Ajax 相关工具(例如 AjaxControlToolkit)时,浏览器会向服务器发送异步请求,这些请求的扩展名是 (.axd)。axd 形式的异步请求越多,页面加载所需的时间就越长。因此,如果我们能够将这些 axd 请求合并成一个,就可以显著提高页面加载速度。

image

图:向服务器的 axd 请求

以下是将 axd 脚本合并成一个的步骤。

  1. 查找页面中的所有 JavaScript 引用。为此,请从 这里 下载脚本引用分析器。然后在页面中注册 DLL 并添加 scriptreference 分析器,如下所示

    在页面中注册 DLL

    <%@ Register Assembly="ScriptReferenceProfiler" 
        Namespace="ScriptReferenceProfiler" TagPrefix="microsoft" %>

    将控件添加到页面

    <microsoft:ScriptReferenceProfiler ID="profiler1" runat="server" />

    添加脚本分析器后,如果你运行页面,你将找到页面中的所有脚本引用,如下所示。请记住,你无法合并 Microsoft 提供的 js 文件,例如 MicrosoftAjax.jsMicrosoftAjaxWebform.js 等。

    image

    图:脚本分析器找到的脚本引用
  2. 然后使用 scriptmanagercombinescript 标签来合并 script
    <asp:ScriptManager ID="sm1" runat="server" CompositeScript-ScriptMode="Release">
        <CompositeScript>
            <Scripts>
                <asp:ScriptReference Name="AjaxControlToolkit.Compat.Timer.Timer.js" 
                    Assembly="AjaxControlToolkit, Version=3.0.20820.23813, 
                    Culture=neutral, PublicKeyToken=28f01b0e84b6d53e" />
                <asp:ScriptReference 
                    Name="AjaxControlToolkit.CollapsiblePanel.CollapsiblePanelBehavior.js"
                    Assembly="AjaxControlToolkit, Version=3.0.20820.23813,
                    Culture=neutral, PublicKeyToken=28f01b0e84b6d53e" />
            </Scripts>
        </CompositeScript>
    </asp:ScriptManager>

合并这些脚本后,你会发现页面加载时间显著提高。以下是一些有用的链接

© . All rights reserved.