




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、本章主要從本章主要從4個方面來講述如何優化個方面來講述如何優化ASP.NET網站。主要是兩方面,一方面是網站。主要是兩方面,一方面是性能優化,一方面是用戶體驗優化。在這性能優化,一方面是用戶體驗優化。在這4個方面,筆者又講述了一些比較重要的知個方面,筆者又講述了一些比較重要的知識,比如調用存儲過程、使用識,比如調用存儲過程、使用StringBuilder類拼接字符串、發布網站、類拼接字符串、發布網站、使用緩存、使用緩存、AJAX技術等,這些都是非常技術等,這些都是非常有用的知識,希望讀者掌握。有用的知識,希望讀者掌握。 數據庫方面數據庫方面11.1C#代碼優化代碼優化11.2A ASP.NET
2、方面11.3使用使用AJAX技術技術11.4從數據庫相關的角度來看,值得優化從數據庫相關的角度來看,值得優化的有很多地方,但是對于初學者來說,首的有很多地方,但是對于初學者來說,首推存儲過程。很多初學者都容易忽視存儲推存儲過程。很多初學者都容易忽視存儲過程的使用。那么使用存儲過程有哪些好過程的使用。那么使用存儲過程有哪些好處呢?處呢?存儲過程是存儲在服務器上的一組預存儲過程是存儲在服務器上的一組預編譯的編譯的SQL語句,類似于語句,類似于DOS系統中的批系統中的批處理文件。存儲過程具有對數據庫立即訪處理文件。存儲過程具有對數據庫立即訪問的功能,信息處理極為迅速。使用存儲問的功能,信息處理極為迅
3、速。使用存儲過程可以避免對命令的多次編譯,在執行過程可以避免對命令的多次編譯,在執行一次后其執行規劃就駐留在高速緩存中,一次后其執行規劃就駐留在高速緩存中,以后需要時只需直接調用緩存中的二進制以后需要時只需直接調用緩存中的二進制代碼即可。代碼即可。11.1.1 在在ADO.NET中調用存中調用存儲過程儲過程存儲過程有許多優點。使用存儲過程,存儲過程有許多優點。使用存儲過程,數據庫操作可以封裝在單個命令中,進行數據庫操作可以封裝在單個命令中,進行執行,可以優化性能并且增強安全性執行,可以優化性能并且增強安全性(比如比如防止防止SQL注入注入)。雖然可以通過以。雖然可以通過以SQL語句語句的形式傳
4、遞參數自變量之前的存儲過程名的形式傳遞參數自變量之前的存儲過程名稱來調用存儲過程,但如果使用稱來調用存儲過程,但如果使用 ADO.NET Command對象的對象的Parameters集集合,則可以顯式地定義存儲過程參數并訪合,則可以顯式地定義存儲過程參數并訪問輸出參數和返回值。問輸出參數和返回值。/*創建存儲過程創建存儲過程*/CREATE PROCEDURE c_SelectNamesex char(2),-輸入參數:性別輸入參數:性別age int-輸入參數:年齡輸入參數:年齡AS/*根據年齡和性別查詢姓名根據年齡和性別查詢姓名*/SELECT Name FROM Pers
5、onInfoWHERE Sex=sex AND Age=age11.1.2 使用使用LINQ調用存儲過調用存儲過程程除了使用除了使用ADO.NET調用存儲調用存儲過程外,也可以使用過程外,也可以使用LINQ to SQL來調用存儲過程。這比在來調用存儲過程。這比在ADO.NET中調用存儲過程簡單中調用存儲過程簡單多了。多了。 圖圖11-1 拖入存儲過程到拖入存儲過程到LINQ to SQL類類11.1.3 合理使用連接池合理使用連接池連接到數據庫服務器通常由幾個需要連接到數據庫服務器通常由幾個需要很長時間的步驟組成。必須建立物理通道很長時間的步驟組成。必須建立物理通道(例如套接字或命名管道例如
6、套接字或命名管道),必須與服務器,必須與服務器進行初次握手,必須分析連接字符串信息,進行初次握手,必須分析連接字符串信息,必須由服務器對連接進行身份驗證,必須必須由服務器對連接進行身份驗證,必須運行檢查以便在當前事務中登記,等等一運行檢查以便在當前事務中登記,等等一系列的操作??傊?,這些操作是比較耗費系列的操作。總之,這些操作是比較耗費服務器資源的。服務器資源的。實際上,大多數實際上,大多數Web程序僅使用一個程序僅使用一個或幾個不同的連接配置。這意味著在執行或幾個不同的連接配置。這意味著在執行應用程序期間,許多相同的連接將反復地應用程序期間,許多相同的連接將反復地打開和關閉。為了使打開的連接
7、成本降至打開和關閉。為了使打開的連接成本降至最低,在最低,在ADO.NET中可以使用稱為連接池中可以使用稱為連接池(Connection Pool)的優化方法。的優化方法。string coonString = data source=.;User ID=sa;pwd=sa;Initial Catalog=db ;Min Pool Size = 1 ; Max Pool Size=5;using (SqlConnection sqlCoon=new SqlConnection(coonString) sqlCoon.Open(); .11.1.4 優化查詢語句優化查詢語句ASP.NET中中AD
8、O連接消耗的資源相當連接消耗的資源相當大,大,SQL語句運行的時間越長,占用系統語句運行的時間越長,占用系統資源的時間也越長。因此,盡量使用優化資源的時間也越長。因此,盡量使用優化過的過的SQL語句以減少執行時間。比如,不語句以減少執行時間。比如,不在查詢語句中包含子查詢語句,充分利用在查詢語句中包含子查詢語句,充分利用索引等。索引等。配置為支持提供配置為支持提供WSDL的的HTTP端點端點可以指定以下一種可以指定以下一種WSDL配置,用于響應配置,用于響應提交提交WSDL請求的客戶端:請求的客戶端:(1)默認的)默認的WSDL;(2)自定義的)自定義的WSDL。細節決定成敗,一只馬蹄尚能決定
9、一細節決定成敗,一只馬蹄尚能決定一個國家的命運,何況是一句代碼呢。編寫個國家的命運,何況是一句代碼呢。編寫代碼需要注意哪方面呢?筆者不可能全部代碼需要注意哪方面呢?筆者不可能全部總結出來,只能是提醒大家注意某些比較總結出來,只能是提醒大家注意某些比較重要,而容易忽視的地方而已。希望大家重要,而容易忽視的地方而已。希望大家在自己的程序生涯中,自己總結。在自己的程序生涯中,自己總結。11.2.1 多用泛型多用泛型在前面學習過泛型集合,那么使用泛型有如下好處。在前面學習過泛型集合,那么使用泛型有如下好處。C#的泛型支持:類、結構體、接口、委托以及方法成員。的泛型支持:類、結構體、接口、委托以及方法成
10、員。C#的泛型可采用的泛型可采用“基類,接口,構造器,值類型基類,接口,構造器,值類型/引用類型引用類型”的約束方式來實現對類型參數的的約束方式來實現對類型參數的“顯式約束顯式約束”??梢远x類型安全的數據結構??梢远x類型安全的數據結構。因為防止了拆箱和裝箱,所以可以顯著提高性能因為防止了拆箱和裝箱,所以可以顯著提高性能(裝箱和拆箱是比較消耗性能的,應該盡量避免裝箱和拆箱是比較消耗性能的,應該盡量避免)??稍谥С址盒秃蛿U展方法時,能夠直接對類型使用擴展方法,而不用再反射調用了。可在支持泛型和擴展方法時,能夠直接對類型使用擴展方法,而不用再反射調用了。11.2.2 優先采用使用優先采用使用fo
11、reach循環循環C#的的foreach語句是從語句是從do,while,或,或者者for循環語句變化而來的,其相對來說要循環語句變化而來的,其相對來說要好一些,其可以為任何集合產生最好的迭好一些,其可以為任何集合產生最好的迭代代碼。代代碼。foreach循環的定義依賴于循環的定義依賴于.NET框框架里的集合接口,并且編譯器會為實際的架里的集合接口,并且編譯器會為實際的集合生成最好的代碼。當在集合上做迭代集合生成最好的代碼。當在集合上做迭代時,可用使用時,可用使用foreach來取代其它的循環結來取代其它的循環結構。構。 分析分析3個循環個循環int numbers = new int100;
12、/ 循環循環1foreach ( int i in numbers) Response.Write( i.ToString( );/ 循環循環2for ( int index = 0; index numbers.Length; index+ ) Response.Write( numbersindex.ToString( );/ 循環循環3int len = numbers.Length;for ( int index = 0; index len; index+ ) Response.Write( numbersindex.ToString( );11.2.3 不要過度依賴異常處理不要過度
13、依賴異常處理對于初學者來說,很多時候,使用異對于初學者來說,很多時候,使用異常處理來的比較方便、簡單。但是這里提常處理來的比較方便、簡單。但是這里提醒各位一句:異常大大地降低了性能,所醒各位一句:異常大大地降低了性能,所以不應該將其用作控制正常程序流程的方以不應該將其用作控制正常程序流程的方式。如果有可能檢測到代碼中可能導致異式。如果有可能檢測到代碼中可能導致異常的狀態,請執行這種操作常的狀態,請執行這種操作不要在處不要在處理該狀態之前捕獲異常本身。常見的方案理該狀態之前捕獲異常本身。常見的方案包括:檢查包括:檢查null,分析是否數據類型不對,分析是否數據類型不對,或在應用數學運算前檢查特定
14、值?;蛟趹脭祵W運算前檢查特定值。 下面的示例演示可能導致異常下面的示例演示可能導致異常的代碼以及測試是否存在某種狀的代碼以及測試是否存在某種狀態的代碼。兩者產生相同的結果態的代碼。兩者產生相同的結果try result = 88 / num; catch (Exception e) result = 0; / 功能與上雷同功能與上雷同. if (num != 0) result = 88 / num; else result = 0; 11.2.4 使用使用StringBuilder類拼類拼接字符串接字符串C#的的foreach語句是從語句是從do,while,或,或者者for循環語句變化而
15、來的,其相對來說要循環語句變化而來的,其相對來說要好一些,其可以為任何集合產生最好的迭好一些,其可以為任何集合產生最好的迭代代碼。代代碼。foreach循環的定義依賴于循環的定義依賴于.NET框框架里的集合接口,并且編譯器會為實際的架里的集合接口,并且編譯器會為實際的集合生成最好的代碼。當在集合上做迭代集合生成最好的代碼。當在集合上做迭代時,可用使用時,可用使用foreach來取代其它的循環結來取代其它的循環結構。構。 看似已經將看似已經將“ab”轉化成轉化成“abcd”了了(比如使用比如使用Response.Write()輸出輸出),可是事,可是事實是這么嗎?實是這么嗎? string st
16、r = ab; str += cd;從數據庫相關的角度來看,值得優化從數據庫相關的角度來看,值得優化的有很多地方,但是對于初學者來說,首的有很多地方,但是對于初學者來說,首推存儲過程。很多初學者都容易忽視存儲推存儲過程。很多初學者都容易忽視存儲過程的使用。那么使用存儲過程有哪些好過程的使用。那么使用存儲過程有哪些好處呢?處呢?11.3.1 適當使用服務器控件適當使用服務器控件服務器控件允許開發人員通過服務器控件允許開發人員通過id屬性屬性中指定的名字,來可以引用程序中的控件,中指定的名字,來可以引用程序中的控件,可以通過編程的方式設置屬性和獲得值,可以通過編程的方式設置屬性和獲得值,因此,服務
17、器端處理方式有較大的靈活性。因此,服務器端處理方式有較大的靈活性。 11.3.2 使用緩存使用緩存ASP.NET提供了一些簡單的機制,其提供了一些簡單的機制,其會在不需要為每個頁請求動態計算頁輸出會在不需要為每個頁請求動態計算頁輸出或數據時緩存這些頁輸出或數據。另外,或數據時緩存這些頁輸出或數據。另外,通過設計要進行緩存的頁和數據請求通過設計要進行緩存的頁和數據請求(特別特別是在站點中預期將有較大通訊量的區域是在站點中預期將有較大通訊量的區域),可以優化這些頁的性能。與可以優化這些頁的性能。與.NET Framework的任何的任何Web窗體功能相比,適窗體功能相比,適當地使用緩存可以更好的提
18、高站點的性能,當地使用緩存可以更好的提高站點的性能,有時這種提高是超數量級的。有時這種提高是超數量級的。 緩存是一種無需大量時間和分析就可緩存是一種無需大量時間和分析就可以獲得以獲得“足夠良好的足夠良好的”性能的方法。性能的方法。(1)頁面輸出緩存頁面輸出緩存;(2)用戶控件緩存用戶控件緩存;(3)使用使用Cache對象對象;(4)使用使用Substitution控件動態更新控件動態更新不緩存的部分不緩存的部分。11.3.3 優化優化ASP.NET配置文件配置文件下面介紹一種簡單的方法來設置下面介紹一種簡單的方法來設置web.config文件中的一些常用配置。首先,文件中的一些常用配置。首先,
19、選擇菜單欄選擇菜單欄“網站網站”“ASP.NET配置配置”選項,就能夠打開選項,就能夠打開ASP.NET Web應用程序應用程序管理首頁,如圖管理首頁,如圖11-2所示。所示。 圖圖11-2 ASP.NET Web應用程序管理首頁應用程序管理首頁11.3.4 ASP.NET網站預編譯網站預編譯如果開發大型如果開發大型Web應用程序,就應該應用程序,就應該考慮執行預批編譯??紤]執行預批編譯。ASP.NET在將整個站在將整個站點提供給用戶之前,可以預編譯該站點。點提供給用戶之前,可以預編譯該站點。這為用戶提供了更快的響應時間,提供了這為用戶提供了更快的響應時間,提供了在向用戶顯示站點之前標識編譯時
20、在向用戶顯示站點之前標識編譯時bug的的方法,提供了避免部署源代碼的方法,并方法,提供了避免部署源代碼的方法,并提供了有效地將站點部署到成品服務器的提供了有效地將站點部署到成品服務器的方法??梢栽诰W站的當前位置預編譯網站,方法。可以在網站的當前位置預編譯網站,也可以預編譯網站以將其部署到其他計算也可以預編譯網站以將其部署到其他計算機。機。 圖圖11-3 發布網站窗口發布網站窗口從數據庫相關的角度來看,值得優化從數據庫相關的角度來看,值得優化的有很多地方,但是對于初學者來說,首的有很多地方,但是對于初學者來說,首推存儲過程。很多初學者都容易忽視存儲推存儲過程。很多初學者都容易忽視存儲過程的使用。那么使用存儲過程有哪些好過程的使用。那么使用存儲過程有哪些好處呢?處呢?11.4.1 認識認識AJAXAJAX是是“Asynchronous JavaScript and XML”的縮寫,即的縮寫,即“異步的異步的JavaScript和和XML技術技術”。其實真正對。其實真正對JavaScript理理解了,就會發現這里并沒有什么全新的東解了,就會發現這里并沒有什么全新的東西。西。 11.4.2 使用使用AJAX服務器控件服務器控
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 校園周邊保安管理制度
- 校園客房保潔管理制度
- 校園無線接入管理制度
- 校園物業安全管理制度
- 校園綠化施工管理制度
- 校園象棋活動管理制度
- 校外上課防疫管理制度
- 【醫德醫風】《醫德醫風九項倡議》
- 代謝通路分析-洞察及研究
- 讀鋼鐵是怎樣煉成的有感堅強的意志力讀后感(12篇)
- 臨商銀行股份有限公司招聘筆試真題2024
- 近代史第三章試題及答案
- (完整版)社區工作者考試題含完整答案
- 地理●甘肅卷丨2024年甘肅省普通高中學業水平等級性考試高考地理真題試卷及答案
- 2025年廣西文化和旅游廳所屬事業單位招聘考試備考題庫
- 《數字孿生技術與應用》課件
- 國際壓力性損傷-潰瘍預防和治療臨床指南(2025年版)解讀
- 土木工程力學(本)-001-國開機考復習資料
- 古希臘文明智慧樹知到期末考試答案章節答案2024年復旦大學
- 城市主干道工程監理大綱
- 內蒙古師范大學學生補辦學生證申請表
評論
0/150
提交評論