2009-09-17 41 views
0

我们目前正在尝试优化基于ASP.NET的网站的性能,该网站已经开发了相当长的时间。我们使用MS Ajax和UpdatePanel等。 ComponentArt也是图片的一部分。优化ASP.NET网站的性能

页面加载方法非常繁重,我们正试图从这里修剪一些脂肪。有没有什么办法可以避免在更新面板中的控件的部分回发期间调用页面加载。这完全可能,而不会妨碍页面上的其他功能?

最接近我们试图实现的线程是c# updatepanel with timer page_load。但我们不希望明确检查事件目标,因为有几十个。

回答

1

对不起,到服务器的每请求(AJAX或其他方式)触发整个页面生命周期 - 你需要找到确定,如果你正在处理一个AJAX请求或一个很好的方式整页回发。

http://forums.asp.net/p/1089247/1629084.aspx#1629084看起来像它可能会帮助你,所以例如你想是这样的:如果通过使用

void Page_Load(object sender, EventArgs e) 
{ 
    if (!ScriptManager.GetCurrent(this).IsInAsyncPostBack) 
    { 
     // Do stuff only needed for full rendering here 
    } 
} 
0

页面加载方法在每次回发时都会调用,包括首次加载页面时。

您可以使用IsPostBack属性确定是第一次加载页面还是第二次。把你只想运行一次的所有逻辑放在if语句中。

例如

if (!IsPostBack) 
{ 
    // Do stuff on the first page load only 
} 
0

您可以检查回应这里的答复。非常感谢输入的人!

“IsInAsyncPostBack”是我所需要的。但是,在彻底分析了这个项目后,我得出结论认为,以这种方式进行优化太过复杂,因为它最初的设计并不是以这种方式实现的。已经提交我的建议来查找现有的前端代码库并切换到Silverlight或Flex。

再次感谢并对延迟回复感到抱歉。

0

不知怎的,我错过了被请求的部分渲染

protected void Page_Load(object sender, EventArgs e) 
{ 
    if(!ScriptManager.GetCurrent(this).IsInAsyncPostBack) 
    { 
     // This is a normal (i.e. full) postback 
    } 
} 
+0

这不是一个论坛 - 没有压力回复,但总是很高兴听到最后的结果! :-) – Justin 2011-03-22 09:40:25

+0

@Justin:我当时没有接受我转向Silverlight的建议,我们最终使用了Red Gate的ANTS性能分析器,它工作得很好。但即使在实施性能优化​​之后,该网站仍需要花费十年才能加载。最终,更高的权力决定使用Silverlight。我仍然在看到发生的事情:) – atlantis 2012-01-22 00:46:17