提高 ASP.NET Web 應用性能的 24 種方法和技巧

1.debug=false

 

當創建 ASP.NET Web應用程序,默認設置爲「true」。開發過程中,設置爲「true」是非常有用多,但在應用程序發佈部署時,需將其設置爲「false」。

 

<compilationdefaultLanguage="C#" debug="false"targetFramework="4.0" />

 

2.關閉 tracing(追蹤)

 

tracing 是非常可怕的,你有沒有忘記關閉它。假如沒用,請確定編輯 web.config 並且關閉它。它將佔用大量您的程序資源。

 

<traceenabled="false" requestLimit=”10” pageoutput=”false”traceMode=”SortByTime” localOnly=”true”>

 

3.禁用 session

 

假如您用不到 session 會話跟蹤請務必禁用它。您可以在每個 asp.net 頁面中設置如下:

 

<%@ pagelanguage="c#" codebehind="webform1.aspx.cs" autoeventwireup="false"inherits="webapplication1.webform1"

 

enablesessionstate="false"%>

 

4.使用發佈版本部署應用

 

部署應用程序到生產環境時,要確保使用的發佈版本模式,而不是調試模式。如果使用調試模板極容易發生請求超時。部署成發佈版本,你將會發現速度有很大的提升。

5.關閉頁面的 View State

 

View State 主要是在提交以後回顯用的,它只有在頁面中的數據是提交到本頁時纔有用。其默認是「true」。如果你沒有使用表單數據回傳,那麼可以關閉 View State

 

<%@ PageEnableViewState="false" %>

 

6.避免使用 Response.Redirect

 

Redirect(重定向)非常麻煩,它僅用於用於從當前物理服務器開發跳轉到其它服務器。如果只是在本服務器開發內頁面跳轉請使用 Server.Transfer 語法,這樣會減少很多沒有必要的客戶端重定向。

7.運用 StringBuilder 類以及使用 ToString()方法

 

String 類對象是不可改變的,對於 String 對象的重新賦值在本質上是重新創建了一個 String 對象並將新值賦予該對象,其方法 ToString 對性能的提高並非很顯著。在處理字符串時,最好使用 StringBuilder 類,其 .NET 命名空間是 System.Text。該類並非創建新的對象,而是通過 AppendRemoveInsert 等方法直接對字符串進行操作,通過 ToString 方法返回操作結果。 其定義及操作語句如下所示

 

int num; 

System.Text.StringBuilder str = new System.Text.StringBuilder(); //創建字符串

str.Append(num.ToString()); //添加數值num

Response.Write(str.ToString); //顯示操作結果

 

8.避免拋出異常

 

異常會導致速度變慢,並且使得應用程序頁面顯示異常,使得無法進行其他操作。可以使用 try / catch 使出現的異常記錄到日誌文件中。

9.使用 finally 方法回收資源

 

假如你在應用開發中大量使用其他數據庫連接和訪問文件,請確定在用完後關閉它們。finally 塊是程序中最後被執行,因此在這裏面的代碼會確保一定會被執行,關閉代碼一定要在這個開發方法塊中執行。

10.使用客戶端腳本驗證

 

用客戶端驗證代替服務器開發端驗證。服務器開發端數據驗證將會大量消耗您的服務器開發上的資源,並且會代來大量的頁面數據回傳。

11.使用 Page.IsPostback

 

請確保不執行過多的回傳代碼。使用 Page.IsPostBack 屬性,以確保只執行頁面初始化邏輯,當一個頁面第一次加載,而不向響應客戶回發。

12.使用分頁

 

大多數 Web 應用程序數據是以表格形式顯示。分頁有利用應用開發程序效率。每次儘量顯示小部分數據,這樣會加快頁面顯示速度。

13.使用 Ajax 異步調用

 

使用 Ajax 方法,進行異步調用。

14.刪除未使用的 HttpModules

 

對於 httpModules,我們可以理解爲:建立一個通用的可用被插入任何 Web 應用程序的HttpApplication 事件鉤子。使用 HttpModule是可複用的,不需要特定語應用程序代碼的,只需要web.config 中的一個條目。 web.config 文件中,刪除未使用的 HttpModules

15.避免遞歸函數/嵌套循環

 

在任何編程語言中都需避免嵌套循環和遞歸函數,以提高性能。

16.不使用不必要的 Server Control

 

ASP.NET 中,大量的服務器端控件方便了程序開發,但也可能帶來性能的損失,因爲用戶每操作一次服務器端控件,就產生一次與服務器端的往返過程。因此,非必要,應當少使用 Server Control

17.調用多個操作時,請使用多線程

 

問題出現時,單線程卡在此問題上長時間運行。因此,可以使用多個線程以提高應用程序的響應速度。

18.數據庫的連接和關閉

 

訪問數據庫資源需要創建連接、打開連接和關閉連接幾個操作。這些過程需要多次與數據庫交換信息以通過身份驗證,比較耗費服務器資源。ASP.NET 中提供了連接池(Connection Pool)改善打開和關閉數據庫對性能的影響。系統將用戶的數據庫連接放在連接池中,需要時取出,關閉時收回連接,等待下一次的連接請求。連接池的大小是有限的,如果在連接池達到最大限度後仍要求創建連接,必然大大影響性能。因此,在建立數據庫連接後只有在真正需要操作時纔打開連接,使用完畢後馬上關閉,從而儘量減少數據庫連接打開的時間,避免出現超出連接限制的情況。

19. SqlDataReader 類用於快速只進數據遊標

 

SqlDataReader 類提供了一種讀取從 SQL Server 數據庫檢索的只進數據流的方法。如果當創建 ASP.NET 應用程序時出現允許您使用它的情況,則 SqlDataReader 類提供比 DataSet 類更高的性能。情況之所以這樣,是因爲 SqlDataReader 使用 SQL Server 的本機網絡數據傳輸格式從數據庫連接直接讀取數據。另外,SqlDataReader 類實現 IEnumerable 接口,該接口也允許您將數據綁定到服務器控件。有關更多信息,請參見 SqlDataReader 類。有關 ASP.NET 如何訪問數據的信息,請參見通過 ASP.NET 訪問數據。

20.高性能的 SQL 語句規則

 

    儘量避免全表掃描

    儘量避免在 where 子句中對字段進行 null 值判斷

    儘量避免在 where 子句中使用 != <> 操作符

    儘量避免在 where 子句中使用 or 來連接條件

    in not in 也要慎用

    不要在 where 子句中的「=」左邊進行函數、算術運算或其他表達式運算

    Update 語句,如果只更改12個字段,不要Update全部字段

    對於多張大數據量(這裏幾百條就算大了)的表JOIN,要先分頁再JOIN,否則邏輯讀會很高,性能很差

    儘可能的使用 varchar/nvarchar 代替 char/nchar 更多規則方法請參照:http://database.51cto.com/art/201407/445934.htm

 

21.緩存

 

緩存是一種用空間換取時間的技術,通俗點也就是說把你得到的數據存放在內存中一段時間,在這短時間內服務器不去讀取數據庫、或是真實的數據源,而是讀取你存放在內存中的數據。緩存是網站性能優化不可缺少的一種數據處理機制,他能有效的緩解數據庫壓力。 ASP.NET 中的緩存主要分爲:

 

    頁面緩存

    數據源緩存

    自定義數據緩存

 

22.做負載均衡和服務器加成

 

負載均衡不應該僅僅被看作是實現可擴展性的一種手段。儘管它肯定提高了可擴展性,很多時候它增加了 Web 應用程序的性能,因爲請求和用戶都散發着多個服務器。

23.通過 FxCop 做代碼檢查和優化

 

FxCop 是一個代碼分析工具,它使用基於規則的引擎,來檢查出你代碼中不合規範的部分;你也可以定製自己的規則加入到這個引擎。其中的一些規則是:

 

    避免過多的局部變量

    避免使用未調用的私有代碼

    避免未實例化的內部類

    避免使用未密封的特性

    避免進行不必要的強制轉換

    以內聯方式初始化引用類型的靜態字段

    NeutralResourcesLanguageAttribute 標記程序集

    將成員標記爲 Static 等等。

 

24.ASP.NET 性能監控工具

 

這些是用於監視代碼的性能的工具。

 

    .NET 內存分析器

    Red Gate ANTS 性能分析工具

    Fiddler

    性能計數器

 

結論: 以上是一些性能調整的提示。性能調優不是一天兩天的工作,而是一個反反覆覆的過程。對於網站開發人員來說,在編寫 ASP.NET 應用程序時注意性能問題,養成良好的習慣,提高應用程序性能,至少可以推遲必需的硬件升級,降低網站的成本。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章