.net提高網站訪問速度可做哪些優化教程
l Windows系列:
64位Win2008r2 + Hpyer-V + 負載均衡 + IIS7.5
64位Win2003 + 虛擬機器 + 負載均衡 + IIS6
禁止伺服器訪問外網。關掉不必要的埠。
去掉每個磁碟的所有許可權,只保留administrators組和system完全控制權限。
IIS7.5標識使用ApplicationPoolIdentity,給目錄許可權使用者是:IIS AppPool站點名
IIS6需要為每個站點建獨立的使用者,為IIS使用者單獨設定許可權。
IIS禁止日誌記錄。
二、 資料庫優化
l 64位MSSQL2008:
少用觸發器/遊標/外來鍵。多用存貯過程和檢視。適量使用索引查詢速度會提高很多,每個表的索引儘量不要超過3個。
定時檢視死鎖的程序和等待程序,並清除,還要及時修正死鎖的來源。
複雜的統計報表需要用計劃去跑。
查詢記錄數要使用count(0) 不要使用count(*)。
select的時候表字段不要使用*。*查詢所有欄位是很慢的。
如果欄位是索引列可使用UNION ALL 替代 OR,走索引線路查詢。
大記錄集要使用分頁查詢。
儘量不要使用TEXT/NTEXT型別,要使用VARCHAR(MAX)/NVARCHAR(MAX)。
儘量不要使用臨時表,要使用Table表型別或內嵌檢視。
三、 後端優化
l 多使用DbDataReader,儘量不要使用DataTable/DataSet讀取資料。
l for (int i = 0; i < dt.Rows.Count; i++) 應該這麼寫:
for (int i = 0, len = dt.Rows.Count; i < len; i++)或
foreach (DataRow info in dt.Rows)推薦這種寫法
l 少用try catch,用到try catch時要和 finally一起使用。
l 多使用using如:
using (DbDataReader dr = Data.GetDbDataReader(strSql)) { while (dr.Read()) { }; }
l 大字串操作請使用StringBuilder 少使用string,字串比較用Compare,字串相加用Concat,大字串相加用StringBuilder Append。
l 變數要在先定義在使用,不要在迴圈內定義變數。如:
錯誤的寫法是:for (int i = 1; i < 10; i++) { string s = i.ToString(); }
正確寫法:string s = string.Empty; for (int i = 1; i < 10; i++) { s = i.ToString(); }
這裡還有一個地方要注意的:在字串相加的時候,如果有int型別的要先轉成string型別在相加,減少不必要的裝箱拆箱操作。
l 如果你使用的是HTML控制元件,需要禁用<%@ Page EnableViewState="false" AutoEventWireup="false" EnableSessionState="false",web.config <pages enableViewState="false" enableSessionState="false" />
l 使用foreach替代for
l 操作資料庫要使用存貯過程/檢視。
l 多使用CACHE對資料快取。這才是最關鍵的。NET提供:HttpContext.Current.Cache/HttpRuntime.Cache,共享快取有velocity/ memcached
l 可使用<%@ OutputCache Duration="60" 快取頁面,可使用Response.BufferOutput = true;/ <%@ Page Buffer="true" 輸出緩衝。
l 可將站點生成靜態面頁,好處多多。
l 可使用URL重寫成偽靜態,提供rss/baidu-sitemap/google-sitemap服務,有利於搜尋引擎收錄。
l Ajax呼叫頁面要使用.ashx一般處理程式,速度要比.aspx檔案要快。Ajax請求要使用POST不要使用GET。
l 釋出站點時DLL要Release版本,不要用Debug版本。
l IIS需要使用整合模式,不要使用經典模式。
l Web.config 加 <customErrors mode="On" /> 關閉錯誤提示。
l Web.config 加 <compilation debug="false" /> 關閉除錯模式。
l 使用Server.Transfer替換Response.Redirect
l 多使用泛型集合操作,少用ArrayList。
四、 前端優化
l 最好不使用NET控制元件,用HTML控制元件,頁面使用CSS+DIV佈局。
l 使用JSON + AJAX進行資料互動。
l 要學會使用jQuery提高開發速度。
l 儘量少用<img標記,改用background樣式控制背景圖片。這樣做的好處是方便擴充套件多面板。
l 將CSS background背景圖片多張合併成一張圖片,保證合併後的圖片大小不要超過50K。可將JS檔案合併在一個JS檔案中,然後使用closure_packer_yui_compiler進行壓縮,這樣做的好處是可減少客戶端連線數。
l JS程式碼段不要放在HTML頁面,應該放在獨立的JS檔案裡面,好處是JS檔案可以CDN/快取。
l 可將CSS檔案放到<head></head>之間,JS檔案或程式碼放到</body>之前,讓頁面先顯示在執行JS。
l 可將網站的圖片/CSS/JS/資料/資源放到獨立的站點,做下CDN加速,二級域名會有COOKIES,最好使用一級域名。
l A標記和IMG標記需要加上title/alt,<head>標籤內需要加title/keywords/description/rss/sitemap優化,有利於搜尋引擎收錄。
l 頁面可啟用gzip壓縮。
l 安裝FF的外掛“YSlow/Page Speed”。
五、 其它優化