int i = 1; string s = i.ToString(); 優於 string s = "" + i; (後者裝箱)。StringBuilder sb = new StringBuilder(); sb.Append(...);。$"{var}" 編譯器優化為 String.Format 或 StringBuilder,可讀性佳。<compilation debug="false" targetFramework="4.8" /> <!-- Web.config 生產環境必須 false -->
debug="true" 會:禁用批次編譯、增加記憶體使用、腳本/樣式不壓縮、啟用詳細錯誤頁面。生產環境嚴禁開啟。
<%@ OutputCache Duration="60" VaryByParam="none" %> 快取整頁輸出。Cache["key"] = data; / MemoryCache 快取查詢結果、計算結果。例外處理成本極高 (堆疊追蹤、物件建立)。僅用於真正異常情況,業務邏輯判斷用 if/else、TryParse、ContainsKey 等。
void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack) // 僅首次載入執行
{
BindData(); // 查詢資料庫、繫結控制項
}
}
PostBack 時跳過資料繫結,節省資料庫往返與控制項建構時間。
<%@ Page EnableSessionState="false" %> 完全停用,減少 Session 模組開銷。<%@ Page EnableSessionState="ReadOnly" %> 允許讀取但不鎖定 Session,提升並發 (預設讀寫會獨佔鎖定)。| 項目 | 檢查點 | 工具/設定 |
|---|---|---|
| 資料庫 | 連線池、索引、預存程序、分頁 | SQL Profiler, Execution Plan |
| 字串 | StringBuilder、ToString、插值 | Code Review, Profiler |
| 編譯 | debug="false" | Web.config |
| 快取 | OutputCache、Data Cache、Redis | Cache API, Redis |
| 例外 | 無流程控制例外 | Code Review |
| PostBack | IsPostBack 守護 | Page Life Cycle |
| Session | false / ReadOnly | @Page 指令 |
| 分析 | 定期 Profiling | ANTS, MiniProfiler |
效能優化是持續過程,建立基準 -> 分析熱點 -> 優化驗證 -> 自動化監控,方能長期維持高效能。