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

ASP.NET 應用程式效能優化:頁面、資料存取與字串處理實戰

     編輯:關於ASP.NET

效能優化三大面向

ASP.NET 雖較傳統 ASP 有本質效能提升,但要達到生產級標準,仍需從頁面生命週期、資料存取、字串操作等層面深入優化。

一、頁面層級優化

1. 會話狀態選擇

模式效能擴展性適用場景
InProc (預設)最快單一伺服器單機、不需共享 Session
StateServer較慢 (序列化/網路)多機器共享Web Farm、需 Session 持久
SQL Server最慢高可靠、持久化關鍵業務、容錯需求高

設定於 `web.config`:

<sessionState mode="InProc" timeout="20" />

2. 伺服器控制項取捨

  • 減少不必要的伺服器控制項:靜態文字用 `` 或 Literal,勿用 `Label`。
  • 關閉 ViewState:`EnableViewState="false"` 於 `Label`、`Button`、唯讀 `GridView` 等無需回發狀態的控制項。
  • 善用 Page.IsPostBack:僅首次載入才執行資料繫結、昂貴運算。
void Page_Load(Object o, EventArgs e)
{
 if (!Page.IsPostBack)
 {
 // 僅第一次執行:資料庫查詢、繫結 GridView
 }
}

3. 其他頁面技巧

  • 啟用頁面輸出快取:`<%@ OutputCache Duration="60" VaryByParam="none" %>`
  • 使用 `StringBuilder` 取代字串串接(迴圈中)。
  • 避免在 `Page_Load` 執行耗時操作,改用非同步頁面或背景工作。

二、資料存取優化

  • 使用預存程序減少網路往返與編譯開銷。
  • `SqlDataReader` 唯讀、前進游標,比 `DataSet`/`DataTable` 輕量得多。
  • 連接池:確保連線字串一致、`using` 區塊正確釋放連線。
  • 分頁查詢:`ROW_NUMBER() OVER (ORDER BY ...)` 或 `OFFSET/FETCH` (SQL 2012+),避免一次撈取大量資料。
  • 適度索引、避免 `SELECT *`、參數化查詢防止 SQL Injection 並利用執行計畫快取。

三、字串處理優化

  • 大量串接:`StringBuilder`(預設容量 16,可指定初始容量)。
  • 格式化:`string.Format` 或 C# 6 `$""` 插值字串,避免 `+` 運算子多次配置記憶體。
  • 正則表達式:靜態 `Regex` 物件並設定 `RegexOptions.Compiled` 重複使用。
  • 編碼轉換:指定 `Encoding.UTF8` 避免預設編碼歧義。

監測與調校工具

  • ASP.NET 追蹤:`trace.axd`、頁面指示詞 `Trace="true"`。
  • 效能計數器:`ASP.NET Applications`、`ASP.NET` 類別。
  • Profiler:dotTrace、Visual Studio Diagnostic Tools、PerfView。
  • 迷你分析器:MiniProfiler (StackExchange) 嵌入頁面即時顯示 SQL、HTTP 請求耗時。

總結

效能優化是持續迭代過程:測量 → 找出瓶頸 → 優化 → 驗證。從架構層面(快取策略、非同步、資料庫設計)著手,效果遠大於微觀程式碼調整。

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