首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> ASP.NET 基礎 >> ASP.NET 基礎

ASP.NET 效能優化八大建議實務指南

     編輯:ASP.NET 基礎

1. 資料庫存取優化

  • 連線池:預設開啟,確保連線字串一致以複用連線,減少開啟/關閉開銷。
  • 預存程序:預編譯、重用執行計畫、減少網路傳輸 (僅傳呼叫指令)。
  • SQL 調優:合理索引、避免 SELECT *、減少子查詢、使用 NOLOCK (唯讀)、分頁查詢 (OFFSET/FETCH)。

2. 字串操作優化

  • ToString() 避免裝箱:int i = 1; string s = i.ToString(); 優於 string s = "" + i; (後者裝箱)。
  • StringBuilder:迴圈/大量串接務必使用,StringBuilder sb = new StringBuilder(); sb.Append(...);。
  • 字串插值:C# 6+ $"{var}" 編譯器優化為 String.Format 或 StringBuilder,可讀性佳。

3. 關閉偵錯模式

<compilation debug="false" targetFramework="4.8" /> <!-- Web.config 生產環境必須 false -->

debug="true" 會:禁用批次編譯、增加記憶體使用、腳本/樣式不壓縮、啟用詳細錯誤頁面。生產環境嚴禁開啟。

4. 善用快取

  • 輸出快取:<%@ OutputCache Duration="60" VaryByParam="none" %> 快取整頁輸出。
  • 資料快取:Cache["key"] = data; / MemoryCache 快取查詢結果、計算結果。
  • 分散式快取:Redis / Memcached 適用 Web Farm。

5. 避免用例外控制流程

例外處理成本極高 (堆疊追蹤、物件建立)。僅用於真正異常情況,業務邏輯判斷用 if/else、TryParse、ContainsKey 等。

6. 利用 Page.IsPostBack 避免重複處理

void Page_Load(object sender, EventArgs e)
{
    if (!Page.IsPostBack) // 僅首次載入執行
    {
        BindData(); // 查詢資料庫、繫結控制項
    }
}

PostBack 時跳過資料繫結,節省資料庫往返與控制項建構時間。

7. 停用或設定 Session 為唯讀

  • 不需 Session 的頁面:<%@ Page EnableSessionState="false" %> 完全停用,減少 Session 模組開銷。
  • 唯讀存取:<%@ Page EnableSessionState="ReadOnly" %> 允許讀取但不鎖定 Session,提升並發 (預設讀寫會獨佔鎖定)。

8. 使用效能分析工具

  • ANTS Performance Profiler / dotTrace:程式碼層級熱點分析。
  • PerfView / ETW:底層 GC、JIT、I/O 分析。
  • MiniProfiler:輕量級,嵌入頁面顯示 SQL、HTTP、快取耗時。
  • Chrome DevTools / Lighthouse:前端載入、渲染、JS 效能。

總結檢查清單

項目檢查點工具/設定
資料庫連線池、索引、預存程序、分頁SQL Profiler, Execution Plan
字串StringBuilder、ToString、插值Code Review, Profiler
編譯debug="false"Web.config
快取OutputCache、Data Cache、RedisCache API, Redis
例外無流程控制例外Code Review
PostBackIsPostBack 守護Page Life Cycle
Sessionfalse / ReadOnly@Page 指令
分析定期 ProfilingANTS, MiniProfiler

效能優化是持續過程,建立基準 -> 分析熱點 -> 優化驗證 -> 自動化監控,方能長期維持高效能。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved