我有一個頁面,有5個部分。 每個部分都需要大約1秒的時間進行渲染。使用AJAX或多線程加快頁面加載
Page_Load()
{
RenderSection1(); //1 sec
RenderSection2(); //1 sec
RenderSection3(); //1 sec
RenderSection4(); //1 sec
RenderSection5(); //1 sec
}
我想加快加載此頁面。但同時確保它不會減慢Web應用程序其他部分的性能,也不會使IIS崩潰。
的幾種方法:
使用AJAX請求。需要成爲Controller或Web Service的MVC風格的請求。
使用的UpdatePanel周圍的每個部分將無法正常工作 - 因爲如果我嘗試在同一使用時間的方法在這裏提交刷新到多的UpdatePanel: http://encosia.com/2007/07/13/easily-refresh-an-updatepanel-using-javascript/, 的最後一個請求將永遠是贏家: http://www.codeproject.com/Tips/57035/Simultanious-Async-Requests-Using-Multiple-Update-.aspx使用ASP。 NET線程在回答 right way to create thread in ASP.NET web application中描述。所以我會用一個單獨的線程每個呼叫: RenderSection1,RenderSection2等..
移動,佔用時間,通常DB的請求,爲應用服務類的另一個DLL或外部Web服務的邏輯。喜歡的東西
OrderDTO GetDataForViewOrder(int orderID)
{
}
,並在DLL中使用多個線程。這種方法似乎提供了最佳的可伸縮性,但也將UI細節引入了Application Services層。
您認爲哪種方法最好,爲什麼?
是的,每個RenderSection對DB都有一個大的查詢,這是大部分時間佔用的。我檢查了異步Sql查詢,但它看起來像ADO.NET使用線程來完成異步執行,所以它可能會導致與其他解決方案的太多併發線程相同的問題。 – 2011-01-30 12:22:46