合并 Ajax axd 文件以提高性能






4.20/5 (2投票s)
如何合并 Ajax 和文件以提高性能
如果我们使用 Ajax 或 Ajax 相关控件,就会发现会向服务器发起大量的脚本相关请求。浏览器可以并发请求两个资源到服务器。例如,浏览器可以请求一张图片,同时图片加载时,浏览器可以请求一个 CSS 文件。但在 JavaScript 的情况下,浏览器无法请求两个文件。当浏览器请求一个脚本文件时,它会停止对同一服务器的任何其他请求。
当你使用 Ajax 或 Ajax 相关工具(例如 AjaxControlToolkit
)时,浏览器会向服务器发送异步请求,这些请求的扩展名是 (.axd)。axd 形式的异步请求越多,页面加载所需的时间就越长。因此,如果我们能够将这些 axd 请求合并成一个,就可以显著提高页面加载速度。
图:向服务器的 axd 请求
以下是将 axd 脚本合并成一个的步骤。
- 查找页面中的所有 JavaScript 引用。为此,请从 这里 下载脚本引用分析器。然后在页面中注册 DLL 并添加
scriptreference
分析器,如下所示在页面中注册 DLL
<%@ Register Assembly="ScriptReferenceProfiler" Namespace="ScriptReferenceProfiler" TagPrefix="microsoft" %>
将控件添加到页面
<microsoft:ScriptReferenceProfiler ID="profiler1" runat="server" />
添加脚本分析器后,如果你运行页面,你将找到页面中的所有脚本引用,如下所示。请记住,你无法合并 Microsoft 提供的 js 文件,例如 MicrosoftAjax.js、MicrosoftAjaxWebform.js 等。
图:脚本分析器找到的脚本引用 - 然后使用
scriptmanager
的combinescript
标签来合并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>
合并这些脚本后,你会发现页面加载时间显著提高。以下是一些有用的链接