首頁 >後端開發 >C#.Net教程 >提升 asp.net Web 應用效能的方法與技巧

提升 asp.net Web 應用效能的方法與技巧

伊谢尔伦
伊谢尔伦原創
2016-12-03 09:23:061128瀏覽

在這篇文章中,將介紹一些提高 ASP.NET Web 應用效能的方法和技巧。眾所周知,解決效能問題是一項繁瑣的工作,當出現效能問題,每個人都會歸咎於編寫程式碼的開發人員。

  以下為譯文

提升 asp.net Web 應用效能的方法與技巧

那性能問題到底該如何解決?以下是應用系統發布前,作為 .NET 開發人員需要檢查的點。

  1.debug=“false”

  當建立 ASP.NET Web應用程序,預設為「true」。開發過程中,設定為「true」是非常有用多,但在應用程式發佈部署時,需將其設為「false」。

<compilation defaultLanguage="C#" debug="false" targetFramework="4.0" />

  2.關閉 tracing(追蹤)

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

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

  3.停用 session

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

<%@ page language="c#" codebehind="webform1.aspx.cs" autoeventwireup="false" inherits="webapplication1.webform1"
enablesessionstate="false" %>

4.使用發布版本部署應用程式

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

  5.關閉頁面的 View State

  View State 主要是在提交以後回顯用的,它只有在頁面中的數據是提交到本頁時才有用。其預設是“true”。如果你沒有使用表單資料回傳,那麼可以關閉 View State。

<%@ Page EnableViewState="false" %>

    6.避免使用 Response.Redirect

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

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

  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); //显示操作结果

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 子句中使用or 來連接條件

in 和not in 也要慎用

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

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

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

盡可能的使用varchar/nvarchar 代替char/nchar 

  21.快取

  快取是一種用空間換取時間的技術,通俗點也就是說把你得到的資料存放在記憶體中一段時間,在這件事短時間內伺服器不讀取資料庫、或是真實的資料來源,而是讀取你存放在記憶體中的資料。 快取是網站效能優化不可或缺的一種資料處理機制,他能有效的緩解資料庫壓力。 ASP.NET 中的快取主要分為:

頁面快取

資料來源快取

自訂資料快取

  22.做負載平衡和伺服器加成

   22.做負載平衡和伺服器加成均衡可實現擴展可實現負載不均衡性的一種手段。儘管它肯定提高了可擴展性,很多時候它增加了 Web 應用程式的效能,因為請求和用戶都散發著多個伺服器。

  23.透過 FxCop 做程式碼檢查和最佳化

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

避免過多的局部變數

避免使用未呼叫的私有程式碼

避免未實例化的內部類別

避免使用未密封的特性

避免不必要的強制轉換

以內聯方式初始化引用類型的靜態欄位

用NeutralResourcesLanguageAttribute 標記組件

將成員標記為Static 等等。

  24.ASP.NET 效能監控工具

  這些是用於監視程式碼的效能的工具。

.NET 記憶體分析器

Red Gate ANTS 效能分析工具

Fiddler

效能計數器

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


陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn