北大青鳥:如何優化ASP.NET性能(五)

      在此之前的幾篇文章中,北京北大青鳥學校學術部老師已經為大家介紹了10多種優化ASP.NET性能的方法,希望大家不要光看,而是學會總結與練習。內容較多,不能看了這篇就忘了上篇。所以復習與實踐是非常重要的。

      相關閱讀:ASP.NET中優化性能的方法(四)

      19. 使用HttpResponse.Write方法進行字符串串聯

      該方法提供非常有效的緩沖和連接服務。但是,如果正在執行廣泛的連接,請使用多個 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. 只在必要時保存服務器控件視圖狀態  

      自動視圖狀態管理是服務器控件的功能,該功能使服務器控件可以在往返過程上重新填充它們的屬性值(您不需要編寫任何代碼)。但是,因為服務器控件的視圖狀態在隱藏的窗體字段中往返于服務器,所以該功能確實會對性能產生影響。您應該知道在哪些情況下視圖狀態會有所幫助,在哪些情況下它影響頁的性能。例如,如果您將服務器控件綁定到每個往返過程上的數據,則將用從數據綁定操作獲得的新值替換保存的視圖狀態。在這種情況下,禁用視圖狀態可以節省處理時間。默認情況下,為所有服務器控件啟用視圖狀態。若要禁用視圖狀態,請將控件的EnableViewState 屬性設置為 false。

      您還可以使用 @ Page 指令禁用整個頁的視圖狀態。當您不從頁回發到服務器時,這將十分有用:
      注意:@ Control 指令中也支持 EnableViewState 屬性,該指令允許您控制是否為用戶控件啟用視圖狀態。若要分析頁上服務器控件使用的視圖狀態的數量,請(通過將 trace=true 屬性包括在 @ Page 指令中)啟用該頁的跟蹤并查看 Control Hierarchy 表的 Viewstate 列。(北京北大青鳥學校

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

      雖然大家很可能希望盡量多地使用 Web 窗體頁框架的那些節省時間和代碼的功能,但在某些情況下卻不宜使用 ASP.NET 服務器控件和回發事件處理。通常,只有在檢索或存儲數據時,您才需要啟動到服務器的往返過程。多數數據操作可在這些往返過程間的客戶端上進行。例如,從 HTML 窗體驗證用戶輸入經常可在數據提交到服務器之前在客戶端進行。通常,如果不需要將信息傳遞到服務器以將其存儲在數據庫中,那么您不應該編寫導致往返過程的代碼。如果您開發自定義服務器控件,請考慮讓它們為支持 ECMAScript. 的瀏覽器呈現客戶端代碼。通過以這種方式使用服務器控件,您可以顯著地減少信息被不必要的發送到 Web 服務器的次數。
      使用 Page.IsPostBack 避免對往返過程執行不必要的處理

      如果編寫處理服務器控件回發處理的代碼,有時可能需要在首次請求頁時執行其他代碼,而不是當用戶發送包含在該頁中的 HTML 窗體時執行的代碼。根據該頁是否是響應服務器控件事件生成的。
      使用 Page.IsPostBack 屬性有條件地執行代碼
      例如,下面的代碼演示如何創建數據庫連接和命令,該命令在首次請求該頁時將數據綁定到 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();   
      }
      }

      由于每次請求時都執行 Page_Load 事件,上述代碼檢查 IsPostBack 屬性是否設置為 false。如果是,則執行代碼。如果該屬性設置為 true,則不執行代碼。注意 如果不運行這種檢查,回發頁的行為將不更改。Page_Load 事件的代碼在執行服務器控件事件之前執行,但只有服務器控件事件的結果才可能在輸出頁上呈現。如果不運行該檢查,仍將為 Page_Load 事件和該頁上的任何服務器控件事件執行處理。  

      (未完待續,北京北大青鳥學校) 

      北大青鳥網上報名
      北大青鳥招生簡章
      主站蜘蛛池模板: 久久久国产精品无码一区二区三区| 亚洲一区二区三区在线网站| 日韩一区二区三区四区不卡| 日本一区二区三区在线视频观看免费| 中文字幕aⅴ人妻一区二区| 精品国产乱子伦一区二区三区| 国产精品毛片一区二区| 国产一区二区三区免费视频| 无码人妻啪啪一区二区| 日韩精品无码免费一区二区三区| 无码毛片一区二区三区中文字幕| 亚洲熟妇成人精品一区| 99久久精品午夜一区二区| 国产在线一区二区综合免费视频| 亚洲AV无码一区二区三区国产| 日韩色视频一区二区三区亚洲| 亚洲av无码一区二区三区天堂古代| 亚洲线精品一区二区三区| 久夜色精品国产一区二区三区| 无码一区二区三区亚洲人妻| 国产Av一区二区精品久久| 激情亚洲一区国产精品| 91福利视频一区| 中文字幕在线一区二区在线 | 无码人妻少妇色欲AV一区二区| 亚洲日本一区二区三区在线不卡| 精品日韩一区二区| 波多野结衣一区二区三区高清av| 风间由美在线亚洲一区| 精产国品一区二区三产区| 天海翼一区二区三区高清视频| 亚洲一区二区三区久久| 色窝窝免费一区二区三区 | 久久久久人妻精品一区二区三区 | 国产一区二区三区免费视频| 免费一区二区三区在线视频| 精品一区二区三区无码免费直播| 日本精品一区二区三区在线视频一 | 精品一区二区三区无码免费视频| 亚洲一区二区三区免费观看| 无码少妇丰满熟妇一区二区|