減少不必要的伺服器控制項
伺服器控制項帶來的方便和功能是html控制項所不能比擬的。但是每一個伺服器控制項都需要在伺服器端建立相應的對象,是以犧牲伺服器端的資源為代價的,過多的使用伺服器控制項會極大的影響程式效能。
很多情況下,簡單地使用html標記或資料繫結即能夠實現所需功能。比如<asp:Label>控制項,若使用它來顯示靜態資訊,則完全可用簡單的標記來實現。如果html控制項達不到所要實現的功能,而且在指令碼語言如javascript、vbscript也不能實現的情況下,才考慮選擇伺服器控制項。
禁用不必要的狀態視圖
伺服器控制項的狀態視圖屬效能夠自動的在頁面往返過程中維護伺服器控制項的狀態,減少開發人員的工作量,但是需要佔用大量的伺服器記憶體資源。因此,在不需要伺服器控制項狀態視圖的情況下,應將其EnableViewState屬性設定為false,如常用的<asp:Lable>和<asp:Button>控制項。
Page.IsPostBack的運用
Page.IsPostBack用於記錄頁面是否從用戶端返回,若為false表示初次運行,否則表示從用戶端再次返回該頁面。Page.IsPostBack的合理應用可以避免頁面在往返過程中的一些不必要的操作。在Page_Load函數及一些只需要初始化一次的事件函數中均可以使用該屬性來提高應用程式效能。
void Page_Load(Object o, EventArgs e)
{
if(! Page.IsPostBack)
{
conn=new SqlConnection("server=localhost; uid=sa; pwd=; database=data");
String sql="select * from student";
cmd.Fill(ds,"stu");
mydataGrid.DataBind();
}
}
以上代碼將保證只有在首次訪問該頁面時對資料庫進行讀取並綁定。
合理使用DataGrid控制項
DataGrid控制項帶有最強大的資料顯示功能,還內建了對資料的修改、刪除、添加、分頁等很多功能。如果只需簡單的顯示資料, DataGrid並非最佳選擇。DataGrid控制項的分頁功能,資料的儲存方式(儲存在viewstate中)等,雖然讓程式開發人員使用方便快捷,但由此產生的效能開銷不容小視。
DataList控制項比DataGrid功能少了很多。但自訂性強了很多。特有的多行資料顯示還是比較方便的。DataGrid能實現的功能,它基本能實現。
Repeater控制項功能最少,但自訂性非常強。由於減少了很多功能,對伺服器的效能帶來消耗最小。
因此,在只需簡單顯示資料列表時,選擇Repeater或DataList控制項同樣可以達到目的,而且減輕了效能上的開銷。