日韩天天综合网_野战两个奶头被亲到高潮_亚洲日韩欧美精品综合_av女人天堂污污污_视频一区**字幕无弹窗_国产亚洲欧美小视频_国内性爱精品在线免费视频_国产一级电影在线播放_日韩欧美内地福利_亚洲一二三不卡片区

ASP.NET中常用的26個(gè)優(yōu)化性能方法(5)_.Net教程

編輯Tag賺U幣
教程Tag:暫無Tag,歡迎添加,賺取U幣!

推薦:如何構(gòu)造一個(gè)C#語言的爬蟲程序
C#特別適合于構(gòu)造蜘蛛程序,這是因?yàn)樗呀?jīng)內(nèi)置了HTTP訪問和多線程的能力,而這兩種能力對(duì)于蜘蛛程序來說都是非常關(guān)鍵的。下面是構(gòu)造一個(gè)蜘蛛程序要解決的關(guān)鍵問題:  �、� HTML分析:需要

19. 使用 HttpResponse.Write 方法進(jìn)行字符串串聯(lián)

該方法提供非常有效的緩沖和連接服務(wù)。但是,如果您正在執(zhí)行廣泛的連接,請(qǐng)使用多個(gè) Response.Write 調(diào)用。下面示例中顯示的技術(shù)比用對(duì) Response.Write 方法的單個(gè)調(diào)用連接字符串更快。


Response.Write("a");
  Response.Write(myString);
  Response.Write("b");
  Response.Write(myObj.ToString());
  Response.Write("c");
  Response.Write(myString2);
  Response.Write("d");

20. 除非有特殊的原因要關(guān)閉緩沖,否則使其保持打開

禁用 Web 窗體頁的緩沖會(huì)導(dǎo)致大量的性能開銷。   

21. 只在必要時(shí)保存服務(wù)器控件視圖狀態(tài)  

自動(dòng)視圖狀態(tài)管理是服務(wù)器控件的功能,該功能使服務(wù)器控件可以在往返過程上重新填充它們的屬性值(您不需要編寫任何代碼)。但是,因?yàn)榉⻊?wù)器控件的視圖狀態(tài)在隱藏的窗體字段中往返于服務(wù)器,所以該功能確實(shí)會(huì)對(duì)性能產(chǎn)生影響。您應(yīng)該知道在哪些情況下視圖狀態(tài)會(huì)有所幫助,在哪些情況下它影響頁的性能。例如,如果您將服務(wù)器控件綁定到每個(gè)往返過程上的數(shù)據(jù),則將用從數(shù)據(jù)綁定操作獲得的新值替換保存的視圖狀態(tài)。在這種情況下,禁用視圖狀態(tài)可以節(jié)省處理時(shí)間。默認(rèn)情況下,為所有服務(wù)器控件啟用視圖狀態(tài)。若要禁用視圖狀態(tài),請(qǐng)將控件的EnableViewState 屬性設(shè)置為 false,如下面的 DataGrid 服務(wù)器控件示例所示。


<asp:datagrid EnableViewState="false" datasource="..." runat="server"/>

您還可以使用 @ Page 指令禁用整個(gè)頁的視圖狀態(tài)。當(dāng)您不從頁回發(fā)到服務(wù)器時(shí),這將十分有用:


<%@ Page EnableViewState="false" %>

注意:@ Control 指令中也支持 EnableViewState 屬性,該指令允許您控制是否為用戶控件啟用視圖狀態(tài)。若要分析頁上服務(wù)器控件使用的視圖狀態(tài)的數(shù)量,請(qǐng)(通過將 trace="true" 屬性包括在 @ Page 指令中)啟用該頁的跟蹤并查看 Control Hierarchy 表的 Viewstate 列。有關(guān)跟蹤和如何啟用它的信息,請(qǐng)參見 ASP.NET 跟蹤。

22. 避免到服務(wù)器的不必要的往返過程  

雖然您很可能希望盡量多地使用 Web 窗體頁框架的那些節(jié)省時(shí)間和代碼的功能,但在某些情況下卻不宜使用 ASP.NET 服務(wù)器控件和回發(fā)事件處理。通常,只有在檢索或存儲(chǔ)數(shù)據(jù)時(shí),您才需要啟動(dòng)到服務(wù)器的往返過程。多數(shù)數(shù)據(jù)操作可在這些往返過程間的客戶端上進(jìn)行。例如,從 HTML 窗體驗(yàn)證用戶輸入經(jīng)�?稍跀�(shù)據(jù)提交到服務(wù)器之前在客戶端進(jìn)行。通常,如果不需要將信息傳遞到服務(wù)器以將其存儲(chǔ)在數(shù)據(jù)庫中,那么您不應(yīng)該編寫導(dǎo)致往返過程的代碼。如果您開發(fā)自定義服務(wù)器控件,請(qǐng)考慮讓它們?yōu)橹С?ECMAScript. 的瀏覽器呈現(xiàn)客戶端代碼。通過以這種方式使用服務(wù)器控件,您可以顯著地減少信息被不必要的發(fā)送到 Web 服務(wù)器的次數(shù)。

使用 Page.IsPostBack 避免對(duì)往返過程執(zhí)行不必要的處理

如果您編寫處理服務(wù)器控件回發(fā)處理的代碼,有時(shí)可能需要在首次請(qǐng)求頁時(shí)執(zhí)行其他代碼,而不是當(dāng)用戶發(fā)送包含在該頁中的 HTML 窗體時(shí)執(zhí)行的代碼。根據(jù)該頁是否是響應(yīng)服務(wù)器控件事件生成的。

使用 Page.IsPostBack 屬性有條件地執(zhí)行代碼

例如,下面的代碼演示如何創(chuàng)建數(shù)據(jù)庫連接和命令,該命令在首次請(qǐng)求該頁時(shí)將數(shù)據(jù)綁定到 DataGrid 服務(wù)器控件。


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();
  }
  }


由于每次請(qǐng)求時(shí)都執(zhí)行 Page_Load 事件,上述代碼檢查 IsPostBack 屬性是否設(shè)置為 false。如果是,則執(zhí)行代碼。如果該屬性設(shè)置為 true,則不執(zhí)行代碼。注意 如果不運(yùn)行這種檢查,回發(fā)頁的行為將不更改。Page_Load 事件的代碼在執(zhí)行服務(wù)器控件事件之前執(zhí)行,但只有服務(wù)器控件事件的結(jié)果才可能在輸出頁上呈現(xiàn)。如果不運(yùn)行該檢查,仍將為 Page_Load 事件和該頁上的任何服務(wù)器控件事件執(zhí)行處理。

分享:ASP.NET MVC :實(shí)現(xiàn)我們自己的視圖引擎
在ASP.NET MVC的一個(gè)開源項(xiàng)目MvcContrib中,為我們提供了幾個(gè)視圖引擎,例如NVelocity, Brail, NHaml, XSLT。那么如果我們想在ASP.NET MVC中實(shí)現(xiàn)我們自己的一個(gè)視圖引擎,我們應(yīng)該要怎么做呢?

來源:模板無憂//所屬分類:.Net教程/更新時(shí)間:2008-08-22
相關(guān).Net教程