減少不必要的服務器控件
服務器控件帶來的方便和功能是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控件同樣可以達到目的,而且減輕了性能上的開銷。