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

ASP.NET 效能優化完整指南:資料庫存取、字串處理與組態調校

     編輯:關於ASP.NET

1. 資料庫存取效能優化

資料庫連接與關閉

存取資料庫資源需建立連接、開啟連接和關閉連接幾個操作。這些過程需多次與資料庫交換資訊通過身分驗證,較耗費伺服器資源。ASP.NET 提供連接池改善開啟關閉資料庫對效能影響。系統將用戶資料庫連接放在連接池中,需要時取出,關閉時收回連接,等待下一次連接請求。

連接池大小有限,若達最大限度仍要求建立連接,必大幅影響效能。因此,建立資料庫連接後只有真正需要操作時才開啟連接,使用完畢馬上關閉,盡量減少資料庫連接開啟時間,避免超出連接限制。

使用預存程序

預存程序是儲存在伺服器上一組預編譯 SQL 陳述式,類似 DOS 批次檔。預存程序具對資料庫立即存取功能,資訊處理極快。使用預存程序可避免命令多次編譯,執行一次後執行計畫駐留高速快取中,以後需要時只需直接呼叫快取中二進位程式碼。

另外,預存程序在伺服器端運行,獨立於 ASP.NET 程式,便於修改,最重要的是可減少資料庫操作語句在網路中傳輸。

優化查詢語句

ASP.NET 中 ADO 連接消耗資源相當大,SQL 陳述式運行時間越長,佔用系統資源時間越長。因此盡量使用優化過 SQL 陳述式減少執行時間。如不在查詢語句包含子查詢、充分利用索引等。

2. 字串操作效能優化

使用值型別 ToString 方法

連接字串時,常用 "+" 號直接將數字加入字串。此雖簡單且得正確結果,但涉及不同資料型別,數字需透過裝箱操作轉為參考型別才能加入字串。裝箱操作對效能影響較大,因進行此處理時,將在受控堆中配置新物件,原有值複制到新建立物件中。

使用值型別 ToString 方法可避免裝箱操作,提高應用程式效能。

運用 StringBuilder 類別

String 類別物件不可變更,對 String 物件重新賦值本質上是重新建立 String 物件並賦予新值,其 ToString 方法對效能提升不顯著。

處理字串時,最好使用 StringBuilder 類別,其 .NET 命名空間為 System.Text。該類別非建立新物件,而是透過 Append、Remove、Insert 等方法直接對字串操作,透過 ToString 方法返回操作結果。

定義及操作陳述式如下:

以下是引用片段:
int num;
System.Text.StringBuilder str = new System.Text.StringBuilder(); //建立字串
str.Append(num.ToString()); //加入數值 num
Response.Write(str.ToString); //顯示操作結果

3. 優化 Web 伺服器電腦與特定應用程式組態檔案以符合特定需求

預設 ASP.NET 組態設為啟用最廣泛功能並盡量適應最常見方案。因此,應用程式開發人員可根據應用程式所用功能,優化與變更某些組態以提高效能。下列清單是應考慮選項。

  • 僅對需要應用程式啟用身分驗證。預設身分驗證模式為 Windows 或整合 NTLM。大多數情況下,對需身分驗證應用程式,最好在 Machine.config 禁用身分驗證,在 Web.config 啟用。
  • 根據適當請求與回應編碼設定配置應用程式。ASP.NET 預設編碼 UTF-8。若應用程式為嚴格 ASCII,請配置使用 ASCII 獲微幅效能提升。
  • 考慮對應用程式禁用 AutoEventWireup。Machine.config 中將 AutoEventWireup 設為 false,意謂頁面不將方法名與事件比對掛鉤(如 Page_Load)。若頁面開發人員要用這些事件,需在基底類別重寫這些方法(如為頁面載入事件重寫 Page.OnLoad,而非用 Page_Load 方法)。禁用 AutoEventWireup,頁面將透過將事件連接留給頁面作者而非自動執行,獲微幅效能提升。
  • 從請求處理管線移除未用模組。預設伺服器電腦 Machine.config <httpModules> 區段所有功能保留啟用。根據應用程式所用功能,可從請求管線移除未用模組獲微幅效能提升。檢查每模組及其功能,按需求自訂。

例如,若應用程式不使用會話狀態與輸出快取,可從 <httpModules> 列表移除它們,使請求在不執行其他有意義處理時,不必執行每模組進入離開程式碼。

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