Asp.NET中常用的一些最佳化效能的方法
來源:互聯網
上載者:User
ASP.NET 的緩衝機制相比ASP有很大的改進,本文檔除對常用最佳化方法進行總結介紹外,強調了如何使用ASP.NET的緩衝來獲得最佳效能。
1:不要使用不必要的session
和ASP中一樣,在不必要的時候不要使用Session。
可以針對整個應用程式或者頁面禁用工作階段狀態:
l 禁用頁面的工作階段狀態
l 禁用應用程式的工作階段狀態
在應用程式的Web.Config檔案的sessionstate配置節中,將mode屬性設定為off。
即:。
2:不使用不必要的Server Control
ASP.net中,大量的伺服器端控制項方便了程式開發,但也可能帶來效能的損失,因為使用者每操作一次伺服器端控制項,就產生一次與伺服器端的往返過程。因此,非必要,應當少使用Server Control。
3:不使用不必要的ViewState
預設情況下,ASP.Net對所有的Server Control都啟用了ViewState(檢視狀態)。但ViewState需要在用戶端儲存一些資訊,這會造成效能的消耗。當必須使用Server Control時,可以考慮禁止ViewState。
有兩種方式禁止ViewState:針對整個頁面或者單個控制項禁用ViewState。
l 針對控制項
l 針對頁面
4:不要用Exception控製程序流程
有些程式員可能會使用異常來實現一些流程式控制制。例如:
try{
result=100/num;
}
Catch(Exception e)
{
result=0;
}
但實際上,Exception是非常消耗系統效能的。除非必要,不應當使用異常控制來實現程式流程。
上面的代碼應當寫為:
if(num!=0)
result=100/num;
else
result=0;
5:禁用VB和Jscript動態資料類型
應筆賈障允鏡厴昝鞅淞渴堇嘈停餑芄喚讜汲絛虻鬧蔥惺奔洹N耍梢栽諞趁媲懊嫘疵鰨?
6:使用預存程序完成資料訪問
7:唯讀資料訪問不要使用DataSet。
DataSet作為一個功能強大的、支援離線的資料庫,其對效能的開銷也相對較大。在特定的場合可以使用.Net中的其它資料集作為替代。
n 使用SqlDataReader代替DataSet;
n SqlDataReader是read-only,forward-only。
8:關閉ASP.NET的Debug模式
為了方便開發調試,VS.net中對於Debug模式預設是開啟的,在部署應用程式時,應該關閉Debug模式,這將有效提高應用程式效能。
9:使用ASP.Net Output Cache緩衝資料;
提供緩衝功能是ASP.net中非常強大的一種功能。曾看到過某些評測說:ASP.net程式的效能比SUN的JSP應用程式效能快上幾倍,實際上,該評測程式非常重要的一點就是使用了很多ASP.net的緩衝功能。
ASP.net中常用的緩衝方式有:
n 頁面緩衝
一個例子:查詢北京市的天氣。因為天氣資料在一定的時間內是相對規定的。
當Web程式中第一次查詢北京市的天氣時,應用程式可能是調用一個遠端WebService擷取天氣資訊。而其後的使用者就可以從緩衝中得到當前的天氣資訊。這將大大提高效能,減少伺服器的壓力。
方式:
u :指明頁面使用緩衝
u Duration:控制緩衝有效時間,單位為分鐘。
u VaryByParam:用於指明是否緩衝的判斷依據。例如,如果第一個使用者查詢的是北京的天氣,則緩衝中儲存了北京市的天氣。當第二個使用者查詢上海的天氣時,為避免讀取到錯誤的緩衝,可以用這樣的代碼緩衝多個城市的天氣:
這就指明了根據頁面URL中的cityName參數來緩衝多份資料。
n 片斷緩衝
在ASP.net中,除了在頁面範圍內使用緩衝,也還可以針對User Control使用Output Cache參數實現對使用者控制項的緩衝。同樣的,一個頁面中相同類型的控制項也可以有多個不同的緩衝。可以根據參數來實現不同的緩衝。
例如:對於控制項可以根據Control 的C屬性的不同實現不同的緩衝。
n 資料緩衝
n 緩衝的到期依賴條件
某種意義上,Cache和Application是一樣的,都是一種公有的對象。為了取得緩衝與資料有效性之間的平衡,可以根據需要對緩衝到期策略進行合理的設定。
u 檔案依賴
Cache.Insert (“Mydata”, Source
, New CacheDependency(Server.MapPath(“authors.xml”)))
此代碼的含義是當authors.xml檔案不發生變化的時候,緩衝MyData始終有效。
u 時間依賴
設定1小時後到期,這是一種絕對到期。
Cache.Insert(“Mydata”,Source,null
,DateTime.Now.AddHours(1),TimeSpan.Zero);
u 相對到期依賴
當DataSet不再發生變化20分鐘以後,緩衝到期。
Cache.Insert(“MyData”,Source,null
,DateTime.MaxValue,TimeSpan.FromMinutes(20));