I've tried to investigate slow load of UpdatePanel. It works quick enough in FireFox, slow in IE 7 and even more slower in IE6.
I found a few related links:
In production make sure that <compilation debug="false"> is in your web.config(tip from http://forums.asp.net/thread/1635011.aspx).
Delayed load with an UpdatePanel and similar post.
The top 10 mistakes when using AJAX recommends do not put everything in a UpdatePanel.
"Are you making these 3 common ASP.NET AJAX mistakes?" suggest to use IsPostBack, IsInAsyncPostBack and __EVENTTARGET to avoid redundant execution of code during partial postbacks.
The article "Build Google IG like Ajax Start Page in 7 days using ASP.NET Ajax and .NET 3.0" shows(among other intersting things) how to consider what to include into UpdatePanes.
Dynamic User Control, Ajaxify your controls suggests an alternative to UpdatePanel without instantiation the full page ,but the user control CANNOT depend on the page it lives in.
Loading UserControl Dynamically in UpdatePanel
Post "How to solve slow reponse with ASP.NET AJAX in IE 6?" suggests(among others) to apply IIS compression to imporove the loading time.(NOT SURE HOW?)
UpdatePanel: having fun with errors describes 3 techniques to handle errors. I prefer server logging using OnAsyncPostBackError="HandleError" . The ideas are detailed in Customizing Error Handling for ASP.NET UpdatePanel Controls. See also Asp.net Ajax Exception Logging and How to improve ASP.NET AJAX error handling
Avoid calling unneseccary procedures during partial Update:
ScriptManager scriptManager = ScriptManager.GetCurrent(this.Page);
if ((scriptManager != null) && (scriptManager.IsInAsyncPostBack))
{ //ASSUMPTION: the control is not included in AJAX UpdatePanel
return;
}
1. Always
specify <UpdatePanel
UpdateMode="conditional">
3. Specify ChildrenAsTriggers=false, if you want to
specify triggers explicitely
3. JavaScript calls _doPostBack('<%=btnTrigger.UniqueID %>
$get("ID")