在底層,.NET和ASP.NET基礎結構為了讓開發的工作更輕鬆,做了大量的基礎工作。雖然這個體繫結構作為一個黑盒很不錯,但有時瞭解啟動並執行實現細節是很有益的,可以有效地使用運行時獲得效能上的優勢。
1、檢視狀態的最佳化
可以從不同的粒度控制網站的檢視狀態:在web.config設定EnableViewState為false禁用所有頁面的ViewState,Page的EnableViewState屬性繼承web.config的設定,如果要在單獨的頁面可以設定EnableViewState。另外可以單獨設定控制項的EnableViewState。
web.config: <pages enableViewState="false"/>
page:<%@ Page Language="C#" CodeBehind="Default.aspx.cs" Inherits="Default" EnableViewState="false"%>
控制項:<asp:Label ID="lbInfo" runat="server" EnableViewState="false" />
2、盡量減少伺服器控制項的數量
頁面上伺服器端的控制項應該保持最低的數量上,伺服器端的控制項不僅產生檢視狀態,它們也需要額外的運行時處理來綁定到成員變數,呈現,然後卸載。能不用伺服器控制項的盡量不用。
3、工作階段狀態的考慮
在建立一個Web應用程式是一個重大的問題就是頁面請求直接維護狀態,因為http請求時無狀態的。例如,知道客戶在購物車中放置了什麼產品。有很多機制可以配合使用以取得狀態的持久性:cookies,檢視狀態、QueryString,Session。
ASP.NET提供三種不同的工作階段狀態提供者(In-Proc、狀態伺服器、資料庫),極大地提高了會話功能。進程間工作階段狀態提供者是這三者中最快的,狀態伺服器雖然不如進程間的快,但可以在多個伺服器器直接共用工作階段狀態。資料庫儲存時最健壯的但最慢。
無論使用哪種工作階段狀態提供者,都不要濫用會話功能,儲存大量的資料或對象,“大量”的定義將取決於需要支援的使用者的數量和應用程式的硬體。如果在有些頁面不使用Session可以禁用頁面的Session,設定EnableSessionState為False,也可以稍稍減少頁面出來的開銷。
4、把異常減到最少
異常是通知程式執行期間發生的錯誤的一個非常有用的機制。和傳回碼不同,程式不能忽略異常——它們將會改變程式的執行流。在效能和記憶體都很關鍵的應用程式中經常避開以免額外的開銷。在.NET運行時的託管環境中,用try和catch設定異常處理代碼只對效能有可以忽略不計的影響,但如果有拋出異常效能的損失就比較大。
5、使用早期繫結
前期綁定是在編譯的時候就確定了要繫結資料,前期綁定如果失敗,會在編譯時間報編譯錯誤,可以避免在運行時編譯錯誤。而後期綁定是在啟動並執行時候才填充資料,後期綁定失敗只有在運行時的時候才發生。www.126fm.net