如何在网页底部注册客户端脚本资源,以提高加载时间

本文关键字:高加载 时间 加载 资源 网页 底部 注册 脚本 客户端 | 更新日期: 2023-09-27 18:08:15

我真的很讨厌Extender控件,Asp.net脚本控件在网页顶部发出javascript的方式,只是在重新考虑在底部发出类似的任何其他方式,ClientScriptManager.RegisterStartupScript。在看这个帖子的DanWahlin,我认为这是可能的,但我将不得不处理所有肮脏的工作看到的脚本被包括两次,并确保所有必要的脚本都包括在顺序。所以我的问题归结为

"我正在开发自定义控件,扩展器控件,我希望我所有的脚本发出的网页底部,你建议什么选项和为什么"

注意:这些脚本和css作为web资源嵌入

如何在网页底部注册客户端脚本资源,以提高加载时间

只要我们谈论MS AJAX工具包有一个选项在工具包ScriptManager,被称为"LoadScriptsBeforeUI"。如果你的目标是加载UI,那么将其设置为"false"将允许你在脚本之前加载UI。

我通常想知道为什么在网页顶部有脚本会打扰你,因为这是一种普遍的做法,只有当你的连接非常慢时,你才会看到任何影响。

你必须处理页面的OnRender部分。我在做类似的事情,但移动页面的视图状态为SEO的东西

 protected override void Render(System.Web.UI.HtmlTextWriter writer)
 {
  System.IO.StringWriter stringWriter = new System.IO.StringWriter();
  HtmlTextWriter htmlWriter = new HtmlTextWriter(stringWriter);
  base.Render(htmlWriter);
  string html = stringWriter.ToString();
  int startPoint = -1;
  int endPoint = -1;
  startPoint = html.IndexOf("<input type='"hidden'" name='"__VIEWSTATE'"");
  if (startPoint >= 0)
  {
    endPoint = html.IndexOf("/>", startPoint) + 2;
    string viewstateInput = html.Substring(startPoint, endPoint - startPoint);
    html = html.Remove(startPoint, endPoint - startPoint);
    int FormEndStart = html.IndexOf("</form>") - 1;
    if (FormEndStart >= 0)
      html = html.Insert(FormEndStart + 1, viewstateInput);        
  }
}

也许你可以做同样的寻找脚本标签。我能想到的另一种方法是在页面末尾放一个<%=MyVar%>,这样你就可以从后面的代码设置它,但我想这与页面的耦合太大了

实际上,使用当前的ajax扩展控件实现是无法做到的。所以我设法依靠客户端脚本依赖框架,如script.js代替。我做到了我想要的。