如何在网页底部注册客户端脚本资源,以提高加载时间
本文关键字:高加载 时间 加载 资源 网页 底部 注册 脚本 客户端 | 更新日期: 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
代替。我做到了我想要的。