ASP.NET效能最佳實踐
作者:Eve Cole
更新時間:2009-06-30 16:04:02
根據MSDN webcast 整理邏輯/實體設計實務推薦: 使用邏輯三層模型頁面(.aspx)和使用者控制項(.ascs)
可重複使用類型(元件)放在bin目錄下資料放在SQL資料庫中推薦: 為Web Farm設計不要假定訪客永遠會回到同一伺服器注意靜態變數和應用程式狀態
Web Farm會話狀態建議: 用同一個行程應避免(可能時):
對XML Web服務的同步呼叫透過DCOM的遠端呼叫使用XML Web 服務:
因特網上應用程式之間的通訊不要用於應用內通訊推薦: 使用ISA伺服器,當需要DMZ安全域時:
只允許透過ISA訪問
ISA隧道經由DMZ到達ASP.NET
減少進程轉換語言/程式碼建議避免使用晚綁定
<%@ Page Language = "VB" Explicit = "true" %>要求宣告所有變數型別,依然允許晚綁定
<%@ Page Language = "VB" strict = "true" %>禁止使用任何晚綁定
COM互動建議盡量少使用COM,而使用託管的元件資料建議將資料儲存在SQL Server中選擇適當的資料存取方式: OLEDB/SQL client/ODBC
合理選擇DataSet和DataReader 進行資料存取狀態管理選擇適當的方式存放Session : Inproc/StateServer/database
使用簡單資料類型避免在Session中儲存STA的COM物件如果不需要Session,則停用它: EnableSessionState = "false"
如果可能,可使用readonly特性: EnableSessionState = "Readonly"
哪果不需要ViewState則停用它, EnableViewState = false
最小化ViewState中的資料查看ViewState的大小查看HTML輸出源碼或啟用Trace
使用快取頁面快取部分頁面緩存
Cache物件資料快取
WebService快取量化WEB效能的方法: 機器吞吐率回應時間透過給伺服器加負載來測試使用多台客戶端機器載入免費Microsoft Web Application Stress
測試多種場景模擬對網站的端對端場景遍歷測試單頁效能需要計算的數值不同負載下的Request/sex(100,250,500,750,1000等同時存取的客戶)
辨認可接受TTFB/TTLB回應時間內的最大客戶負載關鍵的效能計數器處理器,CPU%使用率|| 低數值= 受陰或鎖定競爭
ASP.NET,入列請求數|| 線性成長表示伺服器已滿載
ASP.NET應用,每秒請求數||動態吞吐量(應當一致)
ASP.NET應用,總錯誤數|| 指示功能錯誤(應為0)
ASP.NET應用程式,工作進程重啟|| 指示嚴重功能錯誤