根據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應用,工作進程重啟 || 指示嚴重功能錯誤