明輝手游網(wǎng)中心:是一個免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺!

Asp.NET中常用的一些優(yōu)化性能的方法

[摘要]ASP.NET 的緩存機(jī)制相比ASP有很大的改進(jìn),本文檔除對常用優(yōu)化方法進(jìn)行總結(jié)介紹外,強(qiáng)調(diào)了如何使用ASP.NET的緩存來獲得最佳性能。1:不要使用不必要的session和ASP中一樣,在不必要的...
ASP.NET 的緩存機(jī)制相比ASP有很大的改進(jìn),本文檔除對常用優(yōu)化方法進(jìn)行總結(jié)介紹外,強(qiáng)調(diào)了如何使用ASP.NET的緩存來獲得最佳性能。

1:不要使用不必要的session
和ASP中一樣,在不必要的時候不要使用Session。

可以針對整個應(yīng)用程序或者頁面禁用會話狀態(tài):

l         禁用頁面的會話狀態(tài)


l         禁用應(yīng)用程序的會話狀態(tài)

在應(yīng)用程序的Web.Config文件的sessionstate配置節(jié)中,將mode屬性設(shè)置為off。

即:。



2:不使用不必要的Server Control
ASP.net中,大量的服務(wù)器端控件方便了程序開發(fā),但也可能帶來性能的損失,因?yàn)橛脩裘坎僮饕淮畏⻊?wù)器端控件,就產(chǎn)生一次與服務(wù)器端的往返過程。因此,非必要,應(yīng)當(dāng)少使用Server Control。



3:不使用不必要的ViewState
默認(rèn)情況下,ASP.Net對所有的Server Control都啟用了ViewState(視圖狀態(tài))。但ViewState需要在客戶端保存一些信息,這會造成性能的消耗。當(dāng)必須使用Server Control時,可以考慮禁止ViewState。

有兩種方式禁止ViewState:針對整個頁面或者單個控件禁用ViewState。

l         針對控件


l         針對頁面


4:不要用Exception控制程序流程
有些程序員可能會使用異常來實(shí)現(xiàn)一些流程控制。例如:



try{

   result=100/num;

}

Catch(Exception e)

{

   result=0;

}

但實(shí)際上,Exception是非常消耗系統(tǒng)性能的。除非必要,不應(yīng)當(dāng)使用異?刂苼韺(shí)現(xiàn)程序流程。

上面的代碼應(yīng)當(dāng)寫為:



if(num!=0)

   result=100/num;

else

   result=0;

5:禁用VB和Jscript動態(tài)數(shù)據(jù)類型
應(yīng)當(dāng)始終顯示地申明變量數(shù)據(jù)類型,這能夠節(jié)約程序的執(zhí)行時間。為此,可以在頁面前面寫明:

6:使用存儲過程完成數(shù)據(jù)訪問
7:只讀數(shù)據(jù)訪問不要使用DataSet。
DataSet作為一個功能強(qiáng)大的、支持離線的數(shù)據(jù)庫,其對性能的開銷也相對較大。在特定的場合可以使用.Net中的其它數(shù)據(jù)集作為替代。

n         使用SqlDataReader代替DataSet;

n         SqlDataReader是read-only,forward-only。

8:關(guān)閉ASP.NET的Debug模式
為了方便開發(fā)調(diào)試,VS.net中對于Debug模式默認(rèn)是開啟的,在部署應(yīng)用程序時,應(yīng)該關(guān)閉Debug模式,這將有效提高應(yīng)用程序性能。

9:使用ASP.Net Output Cache緩沖數(shù)據(jù);
提供緩沖功能是ASP.net中非常強(qiáng)大的一種功能。曾看到過某些評測說:ASP.net程序的性能比SUN的JSP應(yīng)用程序性能快上幾倍,實(shí)際上,該評測程序非常重要的一點(diǎn)就是使用了很多ASP.net的緩沖功能。

ASP.net中常用的緩沖方式有:

n         頁面緩沖

一個例子:查詢北京市的天氣。因?yàn)樘鞖鈹?shù)據(jù)在一定的時間內(nèi)是相對規(guī)定的。

當(dāng)Web程序中第一次查詢北京市的天氣時,應(yīng)用程序可能是調(diào)用一個遠(yuǎn)程的WebService獲取天氣信息。而其后的用戶就可以從緩沖中得到當(dāng)前的天氣信息。這將大大提高性能,減少服務(wù)器的壓力。

方式:

u       :指明頁面使用緩沖

u       Duration:控制緩沖有效的時間,單位為分鐘。

u       VaryByParam:用于指明是否緩沖的判斷依據(jù)。例如,如果第一個用戶查詢的是北京的天氣,則緩沖中存儲了北京市的天氣。當(dāng)?shù)诙䝼用戶查詢上海的天氣時,為避免讀取到錯誤的緩沖,可以用這樣的代碼緩沖多個城市的天氣:


這就指明了根據(jù)頁面URL中的cityName參數(shù)來緩沖多份數(shù)據(jù)。

n         片斷緩沖

在ASP.net中,除了在頁面范圍內(nèi)使用緩沖,也還可以針對User Control使用Output Cache參數(shù)實(shí)現(xiàn)對用戶控件的緩沖。同樣的,一個頁面中相同類型的控件也可以有多個不同的緩沖?梢愿鶕(jù)參數(shù)來實(shí)現(xiàn)不同的緩沖。

例如:對于控件可以根據(jù)Control 的C屬性的不同實(shí)現(xiàn)不同的緩沖。



n         數(shù)據(jù)緩沖



n         緩沖的過期依賴條件

某種意義上,Cache和Application是一樣的,都是一種公有的對象。為了取得緩沖與數(shù)據(jù)有效性之間的平衡,可以根據(jù)需要對緩沖過期策略進(jìn)行合理的設(shè)置。

u       文件依賴

Cache.Insert (“Mydata”, Source

                           , New CacheDependency(Server.MapPath(“authors.xml”)))

此代碼的含義是當(dāng)authors.xml文件不發(fā)生變化的時候,緩沖MyData始終有效。



u       時間依賴

設(shè)定1小時后過期,這是一種絕對過期。

Cache.Insert(“Mydata”,Source,null

                          ,DateTime.Now.AddHours(1),TimeSpan.Zero);



u       相對過期依賴

當(dāng)DataSet不再發(fā)生變化20分鐘以后,緩沖過期。

Cache.Insert(“MyData”,Source,null

                        ,DateTime.MaxValue,TimeSpan.FromMinutes(20));