基於ASP.NET提搞網站訪問速度的最佳化後台代碼與前端做哪些最佳化

來源:互聯網
上載者:User

本文和大家分享一下如何來提高網站的訪問速度,其中包括伺服器的配置建議,ASP.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”。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.