asp.net效能淺析

來源:互聯網
上載者:User

        此課程本來是要和小組的兄弟們共同分享的.由於時間的關係沒有如願以償,今天就在網上和大家共同學習了.由不妥的地方請指出.
1.
  ViewState
      
ViewState是asp.net中的一個特性,它用於把產生頁面要用的一狀態值儲存在一個隱藏欄位中。當頁面被回傳到伺服器時,伺服器要解析,校正和應用ViewState中的資料以還原頁面的控制項樹。ViewState是一個非常有用的特性,它能持久化用戶端的狀態而不用cookie或者伺服器的記憶體。大部分的伺服器控制項都是用ViewState來持久化那些在頁面中與使用者互動的元素的狀態值。•用ViewState會帶來一些負面的影響。首先,它加大的伺服器的響應和請求的時間。其次,每次回傳時都增加了序列化和還原序列化資料的時間。最後,它還消耗了伺服器更多的記憶體。 •關閉指定頁面的ViewState;

 

可以通過WebConfig來禁用整個Web的ViewState

<configration>
   <system.web>
  <pages enableViewState=“false”/>
   </system.web>
</configuration>

ViewState的編碼方式用的是Base64編碼

•EnableViewStateMac屬性工作表示:
如果頁從用戶端回傳時,ASP.NET 應在頁的檢視狀態上運行訊息驗證碼 (MAC),則為 true;否則為 false。預設為 false。 •檢視狀態 MAC 是頁的檢視狀態在其發送到瀏覽器時所儲存到的隱藏變數的加密版本。如果為 true,則檢查加密的檢視狀態以驗證該檢視狀態在用戶端上是否尚未被篡改。如果主要考慮效能,則不要將 EnableViewStateMac  設定為 true 如果整頁模式被篡改頁面就不再使用這些狀態去恢複頁面.  
2.頁面跳轉中的效能
請求的過程:
1)瀏覽器aspx檔案請求--->伺服器執行--->遇到Response.Redirect語句->伺服器發送Response.Redirect後面的地址給客戶機端的瀏覽器--->瀏覽器請求執行新的地址
2)瀏覽器aspx檔案請求->伺服器執行->遇到Server.Transfer語句->伺服器轉向新的檔案
 可以見Server.Transfer比Response.Redirect少了一次伺服器發送回來和用戶端再請求的過程.
跳轉對象:
1)Response.Redirect可以切換到任何存在的網頁。
2)Server.Transfer只能切換到同目錄或者子目錄的網頁.
資料保密:
1、Response.Redirect後地址會變成跳轉後的頁面地址。
2、Server.Transfer後地址不變,隱藏了新網頁的地址及附帶在地址後邊的參數值。具有資料保密功能。
傳遞的資料量(網址後附帶的參數):
1、Response.Redirect能夠傳遞的資料以2KB(也就是地址欄中地址的最大的長度)為限。
2、傳遞的資料超過2KB時,務必使用Server.Transfer。
3. SessionState中的效能
提高ASP.NET應用程式還要顯示的關閉工作階段狀態,如果ASP.NET中不使用的話.要禁用頁面的工作階段狀態,可以在@page指令中設定:

<%@page Language=“C#” EnableSessionState=“False”%>

如果設定了這個屬性在試圖設定或者檢索會話變數時,會拋出一個頁面異常.建議對於不要求訪問會話變數的任何頁面禁用工作階段狀態,視頁面的大小,這會顯著增加頁面載入的時間,因為ASP.NET將不會發生處理ASP.NET會話所要求的狀態管理開銷.
如果頁面要求訪問會話變數但從來不操作這些變數,EnableSessionState的次優設定為”ReadOnly”.也就是說能訪問它們 ,但是不能設定它們 .這樣帶來的效能增長不像完全禁用工作階段狀態那樣大,但好於啟用全部的工作階段狀態管理,該屬性如此設定時如果試圖設定一個會知變數,會拋出一個異常.可以通過WebConfig來禁用整個Web的工作階段狀態.Code
1<configration>
2   <system.web>
3  <sessionState Mode=“off”/>
4   </system.web>
5</configuration>

小結:
1.當不需要在伺服器端的事件期間以編程方式和控制項互動時,不要使用伺服器控制項.也就是說:如果資訊在本質上是靜態,不需要與它互動,或者不從伺服器的代碼引用它.那麼就應該使用標準的HTML.這樣可以降低代碼的大小 ,事件處理常式的數量,檢視狀態的大小和總的頁面類的大小 ------所有這一切都可以提高ASP.NET Web頁面的效能.
2.如果不需要,則關閉任何頁面或整個網站的工作階段狀態.
3.如是不需要,關閉任何頁面或整個網站的檢視狀態.
4.不要忘記關閉調試.
5.顯式的調用Dispose 方式告訴ASP.NET迅速收集不用的內在,通過顯式的請求收回記憶體可以協助垃圾收集進程.
4.頁面緩衝的使用
使用頁面緩衝可以大大提高我們程式的效能.1<%@ OutputCache Duration="60" VaryByParam="*" %> 
2

該樣本將緩衝使用者控制項 60 秒,並且將針對查詢字串的每個變動、針對此控制項所在的每個頁面建立單獨的緩衝條目。
VaryByParam中的“*”指根據參數值的不同緩衝不同的頁面。“None”運行時只緩衝請求的結果,不使用查詢字元或表單參數;
還有一個問題就是,我緩衝了整個頁面,但是這個頁面上的某一些內容需要即時的顯示出來,這個問題應該怎麼樣解決呢?例如:在當前網頁面上我要顯示出有多少人訪問過這個頁面.使用 Substitution 控制項指定輸出緩衝網頁要動態內容替換該控制項的部分。Substitution 控制項為要緩衝大部分內容的頁提供了一種緩衝局部頁的簡化解決方案。可以對整頁進行輸出緩衝,然後使用 Substitution 控制項指定頁中免於緩衝的部分。 Substitution 控制項執行時,會調用一個返回字串的方法。該方法返回的字串即為要在頁中的 Substitution 控制項的位置上顯示的內容。使用 MethodName 屬性指定要在 Substitution 控制項執行時調用的回調方法的名稱。
使用Substitution必須符合的標準:
    1.此方法必須定義為靜態方法.
    2.此方法接受HttpContext類型的參數.
    3.此方法返回String類型的值.

注意:Substitution無法訪問頁面上的其他的控制項.也就是說無法檢查或更改其他控制項的值

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.