asp.net程式效能最佳化總結
——備忘具體技術 細節請查詢
1. 緩衝:頁面OutPut緩衝(根據參數VaryByParams,Location、儲存到硬碟)、User Control的片斷緩衝(VaryByControl=”Con”:針對此控制項所在的每個頁面建立單獨的緩衝條目)、緩衝API、資料緩衝(檔案依賴、時間依賴、相對到期依賴)、回調緩衝(<asp:Substitution />)。
2. 資料處理方面的最佳化:
a) 返回大量資料且不做大量處理,傳回型別用SqlDataReader,唯讀資料訪問不要使用DataSet。
b) 使用預存程序,好處:1、有助於處理複雜業務。2、可擴充性,資料庫結構改變,易於維護修改。3、減少網路傳輸時間。4、先行編譯,速度比執行Sql語句快很多。
c) 查詢語句最佳化:SET FORCEPLAN強制Sql Server按表出現順序使用表。用它選擇表連接順序。
d) 資料庫連接使用完畢立即關閉,使用using自動關閉,比手動關閉哪個優?(待查詢)
e) 最佳化查詢語句。不在查詢語句中包含子查詢語句,充分利用索引。
f) 對資料進行分頁,按頁碼和每頁條數返回每次請求所需資料。[f、g見9]
g) 返回多個資料集。用SqlCommand對象的ExecuteReader方法返回一個強型別的業務對象,再調用NextResult方法來移動資料集指標來定位元據集,但必須把商務邏輯寫到預存程序裡面
3. 頁面最佳化:
a) 無特殊要求,使(整頁模式狀態)EnableViewState=false。如:頁面無需回傳或者每次僅只是呈現。
b) 頁面配置:用FlowLayout比GridLayout(絕對位置,代碼多)好。
c) 盡量使用html控制項,能用javascript的就用。資料控制項選擇:Repeater>Datalist>DataGrid
4. 字串操作:”s” + 2.ToString(); 使用StringBuilder。
5. 採用 Server.Transfer 文法避免不必要的用戶端重新導向。
6. 啟用網路園藝。
7. 最佳化web伺服器:
a) 僅對需要的應用啟用身分識別驗證。
b) 考慮對應用程式禁用 AutoEventWireup,需重寫Page.OnLoad(),而不能直接使用Page_Load()
c) 從請求處理管線中移除不用的模組。Machine.config 檔案中 <httpModules> 節點預設為啟用,如果在應用程式中不使用工作階段狀態和輸出緩衝,則可以從 <httpModules>列表中移除它們。
8. 關閉ASP.NET的Debug模式
9. 其他額外:(沒用過,不懂) http://dotnet.mblogger.cn/mark_lee/posts/6329.aspx似乎只針對Server 2003。
a) IIS6.0中啟用Gzip壓縮發送資料,要修改IIS6.0的xml設定檔。
b) 用IIS6.0的Kernel Caching
c) 幕後處理。System.Threading命名空間下Timer類。如:提交一個新文章……檢查,發郵件…
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.