程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> .NET實例教程 >> 改善ASP.NET2.0性能的五件法寶

改善ASP.NET2.0性能的五件法寶

編輯:.NET實例教程
來源:ITPUB
  大多數ASP.Net程序員都會遇到這樣的問題,當我們的web程序開發周期快要結束的時候,卻發現還有很多性能方面的問題需要解決。如果您遇到這樣的情況,那真是太糟糕了。也許每一個開發人員在開發Web程序時都會制定一個目標,如使用適當的內存以及如何處理Web請求等。雖然這些目標已經制定,但可能仍然會因為使用某些錯誤的方法來改善應用程序的性能而使事情變得更糟糕。因此,在本文中將給出了五個步驟來優化ASP.Net2.0應用程序,希望這些要點會給讀者以啟迪,以便使廣大的開發人員不會走彎路。

  1. 適當地處理數據訪問對象

  如果我們沒有正確處理數據訪問對象,就會大量消耗我們的服務器內存。當建立一個數據訪問對象時,充分理解它們的生命周期以及不需要它們時如何處置是非常必要的。我經常看到很多開發人員建立、打開和銷毀DataReader對象,但卻不對它做任何處理。如果能確保我們的數據訪問對象適當地被管理,這將在很大程度上解決IIS為什麼直接機器快崩潰時才釋放內存的另人頭痛的問題。就先讓我們在解決方案中查找關於DataReader實例吧,對於發現的每一個DataReader實例,請確保它們已經被關閉或是被釋放。建議使用try/catch/finally塊來處理。如下面代碼所示:

using (IDataReader reader = MySite.GetSearchResults())
{
//Consume the datareader
while (reader.Read())
{
//Do something with the data
}
)

使用try/catch/finally 塊

IDataReader reader;
try
{
reader = MyWeb.GetSearchResults();
while (reader.Read())
{
//Do something with the data
}
}
catch (Exception ex)
{
//Log the exception
}
finally
{
//如果這個對象存在,dispose這個對象
if (reader != null)
reader.Dispose();
}

  2. 管理IIS應用程序池

  在典型的應用中,當處理一個Web應用程序時,這個Web程序由多個部分組成。通常有我們的主Web站點,一個或多個Web服務,或是一個圖象處理程序。IIS6為我們提供了為多個應用程序建立程序池的機會。應用程序池允許我們使應用程序在各自的單獨進程中運行。這麼做的好處是將我們的應用程序的不同組成部分分開,使它們分別運行在自己的內存空間中。由於每個處理進程的內存達到800-900M時系統就會變得很慢,因此,需要應用程序分散到不同的處理進程中,這樣每個工作進程占有的內存就不會那麼大了。這樣會從某種程度上提高系統運行的效率。關於如果建立應用程序池的問題,請參閱微軟的相關技術文檔。

  3. 管理ASP.Net狀態

  為了更進一步地改善應用程序性能,對ASP.NET的不同的狀態類型有一個深入的了解是非常必要的。ASP.Net有許多不同的狀態,但是我們應該弄清楚什麼是應用程序狀態、會話狀態和profile屬性。因為這些狀態都保存在服務器的內存上。所有應盡量避免保存太多這三種狀態的數據,除非有必要保存它們。如果我們需要在會話狀態保存數據,就只存我們需要的數據,如標識字段或靜態數據頻繁被使用,因此,它們可以保存在會話狀態中。現在網上有很多關於介紹ASP.Net這三種狀態的文章,如果讀者想更進一步發覺它們的潛力,可以閱讀相關的資料。每一種狀態都應該被使用在適合它們的地方。因此,花時間學習和理解它們是非常必要的。

  在這裡我想給讀者介紹另外一種狀態,視圖狀態,這種狀態將會影響客戶端程序。這種狀態被用來在aspx頁中保存數據,或是在服務端和客戶端之間傳遞數據。在默認情況下,視圖狀態對於ASP.NET和控件是開啟的。但我們的Web頁並不是都需要視圖狀態。如果都開啟,在Web頁中將會有非常多的數據保存在視圖狀態中。解決這個問題的一個正確方法就是使用“VIEw Source"來控制我們的Web頁哪塊數據需要被存儲。我們可以看看ASP.Net發送客戶端的數據,在頁的上端一大塊被加密的數據就是視圖狀態。花一些時間來確定哪些數據需要視圖狀態的值得的。如果某些Web頁和服務端沒有任何數據交互,可以將這些頁的視圖狀態關閉。視圖狀態很靈活,它可以關閉整個頁,也可以只關閉被個用戶控件,或是只打開某些控件的視圖狀態。如果我們關閉某個頁面或控件的視圖狀態,其它的頁面或控件可以保證正確的工作狀態。

  4. 清除不需要的CSS和腳本文件

  一個快速和容易的改善我們的應用程序性能的方法就是清楚我們程序中的不需要的CSS和腳本文件。
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved