哪一项效率最高?假设它们都输出相同的字符串。
加载.LoadControl
是否也使用WebClient
?
b = new StringBuilder();
// ascx
new UserControl().LoadControl("/_includes/test1.ascx").RenderControl(new HtmlTextWriter(new StringWriter(b)));
Console.Write(b.ToString());
// ashx
b = new StringBuilder(new WebClient().DownloadString(site.Url + "/_includes/test2.ashx"));
Console.Write(b.ToString());
// aspx
b = new StringBuilder(new WebClient().DownloadString(site.Url + "/_includes/test3.aspx"));
Console.Write( b.ToString());
答案 0 :(得分:2)
效率顺序(根据您的情况,最多或最少):
用户控制,处理程序(ashx),网页(aspx)。
UserControl
将由IIS上的相同请求处理。另外两个场景需要2个请求,一个用于初始页面,另一个用于辅助处理程序或网页。
在处理程序和网页的情况下加载外部数据会有细微差别,但处理程序的重量轻于网页,因此在这种情况下它会胜出。
最后,我不确定在后两种情况下使用StringBuilder
的目的是什么。
最重要的是,您应该测试这些不同的方法。我的“答案”基于一些广泛的假设。你的millage可能非常。