asp.net 程序優(yōu)化精選第2/2頁
更新時間:2009年04月07日 23:45:27 作者:
對于asp.net需要注意的一些事項(xiàng),可以提高你的程序運(yùn)行效率。
7、不要依賴代碼中的異常
因?yàn)楫惓4蟠蟮亟档托阅埽阅粦?yīng)該將它們用作控制正常程序流程的方式。如果有可能檢測到代碼中可能導(dǎo)致異常的狀態(tài),請執(zhí)行這種操作。不要在處理該狀態(tài)之前捕獲異常本身。常見的方案包括:檢查 null,分配給將分析為數(shù)字值的 String 一個值,或在應(yīng)用數(shù)學(xué)運(yùn)算前檢查特定值。下面的示例演示可能導(dǎo)致異常的代碼以及測試是否存在某種狀態(tài)的代碼。兩者產(chǎn)生相同的結(jié)果。
復(fù)制代碼 代碼如下:
try {
result = 100 / num;
} catch (Exception e){
result = 0;
} // ...to this. if (num != 0)result = 100 / num; else result = 0;
8、使用 HttpResponse.Write 方法進(jìn)行字符串串聯(lián)
該方法提供非常有效的緩沖和連接服務(wù)。但是,如果您正在執(zhí)行廣泛的連接,請使用多個 Response.Write 調(diào)用。下面示例中顯示的技術(shù)比用對 Response.Write 方法的單個調(diào)用連接字符串更快。
例如:
Response.Write("jb51.net");
Response.Write("阿會楠")
........
Response.Write("阿會楠")
........
將優(yōu)于:
string a = "jb51.net";
string b = a + "阿會楠";
Response.Write(b);
string b = a + "阿會楠";
Response.Write(b);
9、除非有特殊的原因要關(guān)閉緩沖,否則使其保持打開
禁用 Web 窗體頁的緩沖會導(dǎo)致大量的性能開銷。
10、只在必要時保存服務(wù)器控件視圖狀態(tài)
自動視圖狀態(tài)管理是服務(wù)器控件的功能,該功能使服務(wù)器控件可以在往返過程上重新填充它們的屬性值(您不需要編寫任何代碼)。但是,因?yàn)榉?wù)器控件的視圖狀態(tài)在隱藏的窗體字段中往返于服務(wù)器,所以該功能確實(shí)會對性能產(chǎn)生影響。您應(yīng)該知道在哪些情況下視圖狀態(tài)會有所幫助,在哪些情況下它影響頁的性能。例如,如果您將服務(wù)器控件綁定到每個往返過程上的數(shù)據(jù),則將用從數(shù)據(jù)綁定操作獲得的新值替換保存的視圖狀態(tài)。在這種情況下,禁用視圖狀態(tài)可以節(jié)省處理時間。默認(rèn)情況下,為所有服務(wù)器控件啟用視圖狀態(tài)。若要禁用視圖狀態(tài),請將控件的EnableViewState 屬性設(shè)置為 false,如下面的 DataGrid 服務(wù)器控件示例所示。
您還可以使用 @ Page 指令禁用整個頁的視圖狀態(tài)。當(dāng)您不從頁回發(fā)到服務(wù)器時,這將十分有用。
注意:@ Control 指令中也支持 EnableViewState 屬性,該指令允許您控制是否為用戶控件啟用視圖狀態(tài)。若要分析頁上服務(wù)器控件使用的視圖狀態(tài)的數(shù)量,請(通過將 trace="true" 屬性包括在 @ Page 指令中)啟用該頁的跟蹤并查看 Control Hierarchy 表的 Viewstate 列。有關(guān)跟蹤和如何啟用它的信息,請參見 ASP.NET 跟蹤。
11、使用 Page.IsPostBack 避免對往返過程執(zhí)行不必要的處理
12、當(dāng)不使用會話狀態(tài)時禁用它
并不是所有的應(yīng)用程序或頁都需要針對于具體用戶的會話狀態(tài),您應(yīng)該對任何不需要會話狀態(tài)的應(yīng)用程序或頁禁用會話狀態(tài)。若要禁用頁的會話狀態(tài),請將 @ Page 指令中的 EnableSessionState 屬性設(shè)置為 false。
注意:如果頁需要訪問會話變量,但不打算創(chuàng)建或修改它們,則將@ Page 指令中的 EnableSessionState 屬性設(shè)置為ReadOnly。還可以禁用 XML Web services 方法的會話狀態(tài)。有關(guān)更多信息,請參見使用 ASP.NET 和 XML Web services 客戶端創(chuàng)建的 XML Web services。若要禁用應(yīng)用程序的會話狀態(tài),請?jiān)趹?yīng)用程序 Web.config 文件的 sessionstate 配置節(jié)中將 mode 屬性設(shè)置為 off。
13、仔細(xì)選擇會話狀態(tài)提供程序
ASP.NET 為存儲應(yīng)用程序的會話數(shù)據(jù)提供了三種不同的方法:進(jìn)程內(nèi)會話狀態(tài)、作為 Windows 服務(wù)的進(jìn)程外會話狀態(tài)和 SQL Server 數(shù)據(jù)庫中的進(jìn)程外會話狀態(tài)。每種方法都有自己的優(yōu)點(diǎn),但進(jìn)程內(nèi)會話狀態(tài)是迄今為止速度最快的解決方案。如果只在會話狀態(tài)中存儲少量易失數(shù)據(jù),則建議您使用進(jìn)程內(nèi)提供程序。進(jìn)程外解決方案主要用于跨多個處理器或多個計(jì)算機(jī)縮放應(yīng)用程序,或者用于服務(wù)器或進(jìn)程重新啟動時不能丟失數(shù)據(jù)的情況。
14、不使用不必要的Server Control
ASP.net中,大量的服務(wù)器端控件方便了程序開發(fā),但也可能帶來性能的損失,因?yàn)橛脩裘坎僮饕淮畏?wù)器端控件,就產(chǎn)生一次與服務(wù)器端的往返過程。因此,非必要,應(yīng)當(dāng)少使用Server Control。
相關(guān)文章
.Net站點(diǎn)設(shè)置多個路由對應(yīng)同一個Action
這篇文章介紹了.Net站點(diǎn)設(shè)置多個路由對應(yīng)同一個Action的方法,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-07-07.NetCore使用Swagger+API多版本控制的流程分析
這篇文章主要介紹了.NetCore使用Swagger+API多版本控制的流程分析,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-12-12比較簡單的將數(shù)據(jù)信息導(dǎo)入wrod文檔方案(C# for word)
史上最簡單將數(shù)據(jù)信息導(dǎo)入wrod文檔方案(C# for word)2010-01-01asp.net AutoCompleteExtender的一個簡單例子代碼
asp.net AutoCompleteExtender的一個簡單例子代碼2009-12-12asp.net后臺如何動態(tài)添加JS文件和css文件的引用
動態(tài)添加JS文件和css文件的引用在asp.net后臺如何實(shí)現(xiàn)呢?首先添加命名空間 using System.Web.UI.HtmlControls,之后按照下面的步驟操作即可2014-09-09使用Aspose.Cells實(shí)現(xiàn)導(dǎo)入導(dǎo)出
這篇文章主要為大家詳細(xì)介紹了如何使用Aspose.Cells實(shí)現(xiàn)導(dǎo)入導(dǎo)出,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-12-12asp.net core項(xiàng)目中如何使用html文件
這篇文章主要給大家介紹了關(guān)于asp.net core項(xiàng)目中如何使用html文件的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面是隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。2018-02-02