ASP.NET中常用的26個優(yōu)化性能方法(5)_.Net教程
推薦:如何構造一個C#語言的爬蟲程序C#特別適合于構造蜘蛛程序,這是因為它已經內置了HTTP訪問和多線程的能力,而這兩種能力對于蜘蛛程序來說都是非常關鍵的。下面是構造一個蜘蛛程序要解決的關鍵問題: ⑴ HTML分析:需要
19. 使用 HttpResponse.Write 方法進行字符串串聯
該方法提供非常有效的緩沖和連接服務。但是,如果您正在執(zhí)行廣泛的連接,請使用多個 Response.Write 調用。下面示例中顯示的技術比用對 Response.Write 方法的單個調用連接字符串更快。
Response.Write("a"); Response.Write(myString); Response.Write("b"); Response.Write(myObj.ToString()); Response.Write("c"); Response.Write(myString2); Response.Write("d"); |
20. 除非有特殊的原因要關閉緩沖,否則使其保持打開
禁用 Web 窗體頁的緩沖會導致大量的性能開銷。
21. 只在必要時保存服務器控件視圖狀態(tài)
自動視圖狀態(tài)管理是服務器控件的功能,該功能使服務器控件可以在往返過程上重新填充它們的屬性值(您不需要編寫任何代碼)。但是,因為服務器控件的視圖狀態(tài)在隱藏的窗體字段中往返于服務器,所以該功能確實會對性能產生影響。您應該知道在哪些情況下視圖狀態(tài)會有所幫助,在哪些情況下它影響頁的性能。例如,如果您將服務器控件綁定到每個往返過程上的數據,則將用從數據綁定操作獲得的新值替換保存的視圖狀態(tài)。在這種情況下,禁用視圖狀態(tài)可以節(jié)省處理時間。默認情況下,為所有服務器控件啟用視圖狀態(tài)。若要禁用視圖狀態(tài),請將控件的EnableViewState 屬性設置為 false,如下面的 DataGrid 服務器控件示例所示。
<asp:datagrid EnableViewState="false" datasource="..." runat="server"/> |
您還可以使用 @ Page 指令禁用整個頁的視圖狀態(tài)。當您不從頁回發(fā)到服務器時,這將十分有用:
<%@ Page EnableViewState="false" %> |
注意:@ Control 指令中也支持 EnableViewState 屬性,該指令允許您控制是否為用戶控件啟用視圖狀態(tài)。若要分析頁上服務器控件使用的視圖狀態(tài)的數量,請(通過將 trace="true" 屬性包括在 @ Page 指令中)啟用該頁的跟蹤并查看 Control Hierarchy 表的 Viewstate 列。有關跟蹤和如何啟用它的信息,請參見 ASP.NET 跟蹤。
22. 避免到服務器的不必要的往返過程
雖然您很可能希望盡量多地使用 Web 窗體頁框架的那些節(jié)省時間和代碼的功能,但在某些情況下卻不宜使用 ASP.NET 服務器控件和回發(fā)事件處理。通常,只有在檢索或存儲數據時,您才需要啟動到服務器的往返過程。多數數據操作可在這些往返過程間的客戶端上進行。例如,從 HTML 窗體驗證用戶輸入經�?稍跀祿峤坏椒⻊掌髦霸诳蛻舳诉M行。通常,如果不需要將信息傳遞到服務器以將其存儲在數據庫中,那么您不應該編寫導致往返過程的代碼。如果您開發(fā)自定義服務器控件,請考慮讓它們?yōu)橹С?ECMAScript. 的瀏覽器呈現客戶端代碼。通過以這種方式使用服務器控件,您可以顯著地減少信息被不必要的發(fā)送到 Web 服務器的次數。
使用 Page.IsPostBack 避免對往返過程執(zhí)行不必要的處理
如果您編寫處理服務器控件回發(fā)處理的代碼,有時可能需要在首次請求頁時執(zhí)行其他代碼,而不是當用戶發(fā)送包含在該頁中的 HTML 窗體時執(zhí)行的代碼。根據該頁是否是響應服務器控件事件生成的。
使用 Page.IsPostBack 屬性有條件地執(zhí)行代碼
例如,下面的代碼演示如何創(chuàng)建數據庫連接和命令,該命令在首次請求該頁時將數據綁定到 DataGrid 服務器控件。
void Page_Load(Object sender, EventArgs e) { // Set up a connection and command here. if (!Page.IsPostBack) { String query = "select * from Authors where FirstName like '%JUSTIN%'"; myCommand.Fill(ds, "Authors"); myDataGrid.DataBind(); } } |
由于每次請求時都執(zhí)行 Page_Load 事件,上述代碼檢查 IsPostBack 屬性是否設置為 false。如果是,則執(zhí)行代碼。如果該屬性設置為 true,則不執(zhí)行代碼。注意 如果不運行這種檢查,回發(fā)頁的行為將不更改。Page_Load 事件的代碼在執(zhí)行服務器控件事件之前執(zhí)行,但只有服務器控件事件的結果才可能在輸出頁上呈現。如果不運行該檢查,仍將為 Page_Load 事件和該頁上的任何服務器控件事件執(zhí)行處理。
分享:ASP.NET MVC :實現我們自己的視圖引擎在ASP.NET MVC的一個開源項目MvcContrib中,為我們提供了幾個視圖引擎,例如NVelocity, Brail, NHaml, XSLT。那么如果我們想在ASP.NET MVC中實現我們自己的一個視圖引擎,我們應該要怎么做呢?
- asp.net如何得到GRIDVIEW中某行某列值的方法
- .net SMTP發(fā)送Email實例(可帶附件)
- js實現廣告漂浮效果的小例子
- asp.net Repeater 數據綁定的具體實現
- Asp.Net 無刷新文件上傳并顯示進度條的實現方法及思路
- Asp.net獲取客戶端IP常見代碼存在的偽造IP問題探討
- VS2010 水晶報表的使用方法
- ASP.NET中操作SQL數據庫(連接字符串的配置及獲取)
- asp.net頁面?zhèn)髦禍y試實例代碼
- DataGridView - DataGridViewCheckBoxCell的使用介紹
- asp.net中javascript的引用(直接引入和間接引入)
- 三層+存儲過程實現分頁示例代碼
- 相關鏈接:
- 教程說明:
.Net教程-ASP.NET中常用的26個優(yōu)化性能方法(5)
。