![第11章 網(wǎng)站優(yōu)化_第1頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/17/8ffd5139-b930-4c95-9e54-2ab12760d770/8ffd5139-b930-4c95-9e54-2ab12760d7701.gif)
![第11章 網(wǎng)站優(yōu)化_第2頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/17/8ffd5139-b930-4c95-9e54-2ab12760d770/8ffd5139-b930-4c95-9e54-2ab12760d7702.gif)
![第11章 網(wǎng)站優(yōu)化_第3頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/17/8ffd5139-b930-4c95-9e54-2ab12760d770/8ffd5139-b930-4c95-9e54-2ab12760d7703.gif)
![第11章 網(wǎng)站優(yōu)化_第4頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/17/8ffd5139-b930-4c95-9e54-2ab12760d770/8ffd5139-b930-4c95-9e54-2ab12760d7704.gif)
![第11章 網(wǎng)站優(yōu)化_第5頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/17/8ffd5139-b930-4c95-9e54-2ab12760d770/8ffd5139-b930-4c95-9e54-2ab12760d7705.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、本章主要從本章主要從4個方面來講述如何優(yōu)化個方面來講述如何優(yōu)化ASP.NET網(wǎng)站。主要是兩方面,一方面是網(wǎng)站。主要是兩方面,一方面是性能優(yōu)化,一方面是用戶體驗優(yōu)化。在這性能優(yōu)化,一方面是用戶體驗優(yōu)化。在這4個方面,筆者又講述了一些比較重要的知個方面,筆者又講述了一些比較重要的知識,比如調(diào)用存儲過程、使用識,比如調(diào)用存儲過程、使用StringBuilder類拼接字符串、發(fā)布網(wǎng)站、類拼接字符串、發(fā)布網(wǎng)站、使用緩存、使用緩存、AJAX技術(shù)等,這些都是非常技術(shù)等,這些都是非常有用的知識,希望讀者掌握。有用的知識,希望讀者掌握。 數(shù)據(jù)庫方面數(shù)據(jù)庫方面11.1C#代碼優(yōu)化代碼優(yōu)化11.2A ASP.NET
2、方面11.3使用使用AJAX技術(shù)技術(shù)11.4從數(shù)據(jù)庫相關(guān)的角度來看,值得優(yōu)化從數(shù)據(jù)庫相關(guān)的角度來看,值得優(yōu)化的有很多地方,但是對于初學(xué)者來說,首的有很多地方,但是對于初學(xué)者來說,首推存儲過程。很多初學(xué)者都容易忽視存儲推存儲過程。很多初學(xué)者都容易忽視存儲過程的使用。那么使用存儲過程有哪些好過程的使用。那么使用存儲過程有哪些好處呢?處呢?存儲過程是存儲在服務(wù)器上的一組預(yù)存儲過程是存儲在服務(wù)器上的一組預(yù)編譯的編譯的SQL語句,類似于語句,類似于DOS系統(tǒng)中的批系統(tǒng)中的批處理文件。存儲過程具有對數(shù)據(jù)庫立即訪處理文件。存儲過程具有對數(shù)據(jù)庫立即訪問的功能,信息處理極為迅速。使用存儲問的功能,信息處理極為迅
3、速。使用存儲過程可以避免對命令的多次編譯,在執(zhí)行過程可以避免對命令的多次編譯,在執(zhí)行一次后其執(zhí)行規(guī)劃就駐留在高速緩存中,一次后其執(zhí)行規(guī)劃就駐留在高速緩存中,以后需要時只需直接調(diào)用緩存中的二進制以后需要時只需直接調(diào)用緩存中的二進制代碼即可。代碼即可。11.1.1 在在ADO.NET中調(diào)用存中調(diào)用存儲過程儲過程存儲過程有許多優(yōu)點。使用存儲過程,存儲過程有許多優(yōu)點。使用存儲過程,數(shù)據(jù)庫操作可以封裝在單個命令中,進行數(shù)據(jù)庫操作可以封裝在單個命令中,進行執(zhí)行,可以優(yōu)化性能并且增強安全性執(zhí)行,可以優(yōu)化性能并且增強安全性(比如比如防止防止SQL注入注入)。雖然可以通過以。雖然可以通過以SQL語句語句的形式傳
4、遞參數(shù)自變量之前的存儲過程名的形式傳遞參數(shù)自變量之前的存儲過程名稱來調(diào)用存儲過程,但如果使用稱來調(diào)用存儲過程,但如果使用 ADO.NET Command對象的對象的Parameters集集合,則可以顯式地定義存儲過程參數(shù)并訪合,則可以顯式地定義存儲過程參數(shù)并訪問輸出參數(shù)和返回值。問輸出參數(shù)和返回值。/*創(chuàng)建存儲過程創(chuàng)建存儲過程*/CREATE PROCEDURE c_SelectNamesex char(2),-輸入?yún)?shù):性別輸入?yún)?shù):性別age int-輸入?yún)?shù):年齡輸入?yún)?shù):年齡AS/*根據(jù)年齡和性別查詢姓名根據(jù)年齡和性別查詢姓名*/SELECT Name FROM Pers
5、onInfoWHERE Sex=sex AND Age=age11.1.2 使用使用LINQ調(diào)用存儲過調(diào)用存儲過程程除了使用除了使用ADO.NET調(diào)用存儲調(diào)用存儲過程外,也可以使用過程外,也可以使用LINQ to SQL來調(diào)用存儲過程。這比在來調(diào)用存儲過程。這比在ADO.NET中調(diào)用存儲過程簡單中調(diào)用存儲過程簡單多了。多了。 圖圖11-1 拖入存儲過程到拖入存儲過程到LINQ to SQL類類11.1.3 合理使用連接池合理使用連接池連接到數(shù)據(jù)庫服務(wù)器通常由幾個需要連接到數(shù)據(jù)庫服務(wù)器通常由幾個需要很長時間的步驟組成。必須建立物理通道很長時間的步驟組成。必須建立物理通道(例如套接字或命名管道例如
6、套接字或命名管道),必須與服務(wù)器,必須與服務(wù)器進行初次握手,必須分析連接字符串信息,進行初次握手,必須分析連接字符串信息,必須由服務(wù)器對連接進行身份驗證,必須必須由服務(wù)器對連接進行身份驗證,必須運行檢查以便在當(dāng)前事務(wù)中登記,等等一運行檢查以便在當(dāng)前事務(wù)中登記,等等一系列的操作??傊?,這些操作是比較耗費系列的操作。總之,這些操作是比較耗費服務(wù)器資源的。服務(wù)器資源的。實際上,大多數(shù)實際上,大多數(shù)Web程序僅使用一個程序僅使用一個或幾個不同的連接配置。這意味著在執(zhí)行或幾個不同的連接配置。這意味著在執(zhí)行應(yīng)用程序期間,許多相同的連接將反復(fù)地應(yīng)用程序期間,許多相同的連接將反復(fù)地打開和關(guān)閉。為了使打開的連接
7、成本降至打開和關(guān)閉。為了使打開的連接成本降至最低,在最低,在ADO.NET中可以使用稱為連接池中可以使用稱為連接池(Connection Pool)的優(yōu)化方法。的優(yōu)化方法。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 優(yōu)化查詢語句優(yōu)化查詢語句ASP.NET中中AD
8、O連接消耗的資源相當(dāng)連接消耗的資源相當(dāng)大,大,SQL語句運行的時間越長,占用系統(tǒng)語句運行的時間越長,占用系統(tǒng)資源的時間也越長。因此,盡量使用優(yōu)化資源的時間也越長。因此,盡量使用優(yōu)化過的過的SQL語句以減少執(zhí)行時間。比如,不語句以減少執(zhí)行時間。比如,不在查詢語句中包含子查詢語句,充分利用在查詢語句中包含子查詢語句,充分利用索引等。索引等。配置為支持提供配置為支持提供WSDL的的HTTP端點端點可以指定以下一種可以指定以下一種WSDL配置,用于響應(yīng)配置,用于響應(yīng)提交提交WSDL請求的客戶端:請求的客戶端:(1)默認的)默認的WSDL;(2)自定義的)自定義的WSDL。細節(jié)決定成敗,一只馬蹄尚能決定
9、一細節(jié)決定成敗,一只馬蹄尚能決定一個國家的命運,何況是一句代碼呢。編寫個國家的命運,何況是一句代碼呢。編寫代碼需要注意哪方面呢?筆者不可能全部代碼需要注意哪方面呢?筆者不可能全部總結(jié)出來,只能是提醒大家注意某些比較總結(jié)出來,只能是提醒大家注意某些比較重要,而容易忽視的地方而已。希望大家重要,而容易忽視的地方而已。希望大家在自己的程序生涯中,自己總結(jié)。在自己的程序生涯中,自己總結(jié)。11.2.1 多用泛型多用泛型在前面學(xué)習(xí)過泛型集合,那么使用泛型有如下好處。在前面學(xué)習(xí)過泛型集合,那么使用泛型有如下好處。C#的泛型支持:類、結(jié)構(gòu)體、接口、委托以及方法成員。的泛型支持:類、結(jié)構(gòu)體、接口、委托以及方法成
10、員。C#的泛型可采用的泛型可采用“基類,接口,構(gòu)造器,值類型基類,接口,構(gòu)造器,值類型/引用類型引用類型”的約束方式來實現(xiàn)對類型參數(shù)的的約束方式來實現(xiàn)對類型參數(shù)的“顯式約束顯式約束”??梢远x類型安全的數(shù)據(jù)結(jié)構(gòu)??梢远x類型安全的數(shù)據(jù)結(jié)構(gòu)。因為防止了拆箱和裝箱,所以可以顯著提高性能因為防止了拆箱和裝箱,所以可以顯著提高性能(裝箱和拆箱是比較消耗性能的,應(yīng)該盡量避免裝箱和拆箱是比較消耗性能的,應(yīng)該盡量避免)??稍谥С址盒秃蛿U展方法時,能夠直接對類型使用擴展方法,而不用再反射調(diào)用了??稍谥С址盒秃蛿U展方法時,能夠直接對類型使用擴展方法,而不用再反射調(diào)用了。11.2.2 優(yōu)先采用使用優(yōu)先采用使用fo
11、reach循環(huán)循環(huán)C#的的foreach語句是從語句是從do,while,或,或者者for循環(huán)語句變化而來的,其相對來說要循環(huán)語句變化而來的,其相對來說要好一些,其可以為任何集合產(chǎn)生最好的迭好一些,其可以為任何集合產(chǎn)生最好的迭代代碼。代代碼。foreach循環(huán)的定義依賴于循環(huán)的定義依賴于.NET框框架里的集合接口,并且編譯器會為實際的架里的集合接口,并且編譯器會為實際的集合生成最好的代碼。當(dāng)在集合上做迭代集合生成最好的代碼。當(dāng)在集合上做迭代時,可用使用時,可用使用foreach來取代其它的循環(huán)結(jié)來取代其它的循環(huán)結(jié)構(gòu)。構(gòu)。 分析分析3個循環(huán)個循環(huán)int numbers = new int100;
12、/ 循環(huán)循環(huán)1foreach ( int i in numbers) Response.Write( i.ToString( );/ 循環(huán)循環(huán)2for ( int index = 0; index numbers.Length; index+ ) Response.Write( numbersindex.ToString( );/ 循環(huán)循環(huán)3int len = numbers.Length;for ( int index = 0; index len; index+ ) Response.Write( numbersindex.ToString( );11.2.3 不要過度依賴異常處理不要過度
13、依賴異常處理對于初學(xué)者來說,很多時候,使用異對于初學(xué)者來說,很多時候,使用異常處理來的比較方便、簡單。但是這里提常處理來的比較方便、簡單。但是這里提醒各位一句:異常大大地降低了性能,所醒各位一句:異常大大地降低了性能,所以不應(yīng)該將其用作控制正常程序流程的方以不應(yīng)該將其用作控制正常程序流程的方式。如果有可能檢測到代碼中可能導(dǎo)致異式。如果有可能檢測到代碼中可能導(dǎo)致異常的狀態(tài),請執(zhí)行這種操作常的狀態(tài),請執(zhí)行這種操作不要在處不要在處理該狀態(tài)之前捕獲異常本身。常見的方案理該狀態(tài)之前捕獲異常本身。常見的方案包括:檢查包括:檢查null,分析是否數(shù)據(jù)類型不對,分析是否數(shù)據(jù)類型不對,或在應(yīng)用數(shù)學(xué)運算前檢查特定
14、值?;蛟趹?yīng)用數(shù)學(xué)運算前檢查特定值。 下面的示例演示可能導(dǎo)致異常下面的示例演示可能導(dǎo)致異常的代碼以及測試是否存在某種狀的代碼以及測試是否存在某種狀態(tài)的代碼。兩者產(chǎn)生相同的結(jié)果態(tài)的代碼。兩者產(chǎn)生相同的結(jié)果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循環(huán)語句變化而
15、來的,其相對來說要循環(huán)語句變化而來的,其相對來說要好一些,其可以為任何集合產(chǎn)生最好的迭好一些,其可以為任何集合產(chǎn)生最好的迭代代碼。代代碼。foreach循環(huán)的定義依賴于循環(huán)的定義依賴于.NET框框架里的集合接口,并且編譯器會為實際的架里的集合接口,并且編譯器會為實際的集合生成最好的代碼。當(dāng)在集合上做迭代集合生成最好的代碼。當(dāng)在集合上做迭代時,可用使用時,可用使用foreach來取代其它的循環(huán)結(jié)來取代其它的循環(huán)結(jié)構(gòu)。構(gòu)。 看似已經(jīng)將看似已經(jīng)將“ab”轉(zhuǎn)化成轉(zhuǎn)化成“abcd”了了(比如使用比如使用Response.Write()輸出輸出),可是事,可是事實是這么嗎?實是這么嗎? string st
16、r = ab; str += cd;從數(shù)據(jù)庫相關(guān)的角度來看,值得優(yōu)化從數(shù)據(jù)庫相關(guān)的角度來看,值得優(yōu)化的有很多地方,但是對于初學(xué)者來說,首的有很多地方,但是對于初學(xué)者來說,首推存儲過程。很多初學(xué)者都容易忽視存儲推存儲過程。很多初學(xué)者都容易忽視存儲過程的使用。那么使用存儲過程有哪些好過程的使用。那么使用存儲過程有哪些好處呢?處呢?11.3.1 適當(dāng)使用服務(wù)器控件適當(dāng)使用服務(wù)器控件服務(wù)器控件允許開發(fā)人員通過服務(wù)器控件允許開發(fā)人員通過id屬性屬性中指定的名字,來可以引用程序中的控件,中指定的名字,來可以引用程序中的控件,可以通過編程的方式設(shè)置屬性和獲得值,可以通過編程的方式設(shè)置屬性和獲得值,因此,服務(wù)
17、器端處理方式有較大的靈活性。因此,服務(wù)器端處理方式有較大的靈活性。 11.3.2 使用緩存使用緩存ASP.NET提供了一些簡單的機制,其提供了一些簡單的機制,其會在不需要為每個頁請求動態(tài)計算頁輸出會在不需要為每個頁請求動態(tài)計算頁輸出或數(shù)據(jù)時緩存這些頁輸出或數(shù)據(jù)。另外,或數(shù)據(jù)時緩存這些頁輸出或數(shù)據(jù)。另外,通過設(shè)計要進行緩存的頁和數(shù)據(jù)請求通過設(shè)計要進行緩存的頁和數(shù)據(jù)請求(特別特別是在站點中預(yù)期將有較大通訊量的區(qū)域是在站點中預(yù)期將有較大通訊量的區(qū)域),可以優(yōu)化這些頁的性能。與可以優(yōu)化這些頁的性能。與.NET Framework的任何的任何Web窗體功能相比,適窗體功能相比,適當(dāng)?shù)厥褂镁彺婵梢愿玫奶?/p>
18、高站點的性能,當(dāng)?shù)厥褂镁彺婵梢愿玫奶岣哒军c的性能,有時這種提高是超數(shù)量級的。有時這種提高是超數(shù)量級的。 緩存是一種無需大量時間和分析就可緩存是一種無需大量時間和分析就可以獲得以獲得“足夠良好的足夠良好的”性能的方法。性能的方法。(1)頁面輸出緩存頁面輸出緩存;(2)用戶控件緩存用戶控件緩存;(3)使用使用Cache對象對象;(4)使用使用Substitution控件動態(tài)更新控件動態(tài)更新不緩存的部分不緩存的部分。11.3.3 優(yōu)化優(yōu)化ASP.NET配置文件配置文件下面介紹一種簡單的方法來設(shè)置下面介紹一種簡單的方法來設(shè)置web.config文件中的一些常用配置。首先,文件中的一些常用配置。首先,
19、選擇菜單欄選擇菜單欄“網(wǎng)站網(wǎng)站”“ASP.NET配置配置”選項,就能夠打開選項,就能夠打開ASP.NET Web應(yīng)用程序應(yīng)用程序管理首頁,如圖管理首頁,如圖11-2所示。所示。 圖圖11-2 ASP.NET Web應(yīng)用程序管理首頁應(yīng)用程序管理首頁11.3.4 ASP.NET網(wǎng)站預(yù)編譯網(wǎng)站預(yù)編譯如果開發(fā)大型如果開發(fā)大型Web應(yīng)用程序,就應(yīng)該應(yīng)用程序,就應(yīng)該考慮執(zhí)行預(yù)批編譯??紤]執(zhí)行預(yù)批編譯。ASP.NET在將整個站在將整個站點提供給用戶之前,可以預(yù)編譯該站點。點提供給用戶之前,可以預(yù)編譯該站點。這為用戶提供了更快的響應(yīng)時間,提供了這為用戶提供了更快的響應(yīng)時間,提供了在向用戶顯示站點之前標識編譯時
20、在向用戶顯示站點之前標識編譯時bug的的方法,提供了避免部署源代碼的方法,并方法,提供了避免部署源代碼的方法,并提供了有效地將站點部署到成品服務(wù)器的提供了有效地將站點部署到成品服務(wù)器的方法??梢栽诰W(wǎng)站的當(dāng)前位置預(yù)編譯網(wǎng)站,方法??梢栽诰W(wǎng)站的當(dāng)前位置預(yù)編譯網(wǎng)站,也可以預(yù)編譯網(wǎng)站以將其部署到其他計算也可以預(yù)編譯網(wǎng)站以將其部署到其他計算機。機。 圖圖11-3 發(fā)布網(wǎng)站窗口發(fā)布網(wǎng)站窗口從數(shù)據(jù)庫相關(guān)的角度來看,值得優(yōu)化從數(shù)據(jù)庫相關(guān)的角度來看,值得優(yōu)化的有很多地方,但是對于初學(xué)者來說,首的有很多地方,但是對于初學(xué)者來說,首推存儲過程。很多初學(xué)者都容易忽視存儲推存儲過程。很多初學(xué)者都容易忽視存儲過程的使用。那么使用存儲過程有哪些好過程的使用。那么使用存儲過程有哪些好處呢?處呢?11.4.1 認識認識AJAXAJAX是是“Asynchronous JavaScript and XML”的縮寫,即的縮寫,即“異步的異步的JavaScript和和XML技術(shù)技術(shù)”。其實真正對。其實真正對JavaScript理理解了,就會發(fā)現(xiàn)這里并沒有什么全新的東解了,就會發(fā)現(xiàn)這里并沒有什么全新的東西。西。 11.4.2 使用使用AJAX服務(wù)器控件服務(wù)器控
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度海洋生物資源運輸保險協(xié)議(2025年度)
- 部編人教版歷史九年級上冊第20課《第一次工業(yè)革命》聽課評課記錄
- 人教版數(shù)學(xué)七年級下冊第56課時《9.3一元一次不等式組(一)》聽評課記錄
- 2025年度戶外招牌安全檢測與維修服務(wù)合同
- 《用7、8的乘法口訣求商》(說課稿)-2023-2024學(xué)年二年級下冊數(shù)學(xué)人教版
- 2025年度網(wǎng)絡(luò)安全合作辦廠協(xié)議書
- 《漢武帝鞏固大一統(tǒng)王朝》聽課評課記錄3(新部編人教版七年級上冊歷史)
- 部編版八年級歷史上冊《第15課 國共合作與北伐戰(zhàn)爭》聽課評課記錄
- 物業(yè)文化背景下如何發(fā)揮社區(qū)功能
- 電商物流業(yè)與科技產(chǎn)業(yè)的融合路徑
- 烤煙生產(chǎn)沿革
- GB 1886.227-2016食品安全國家標準食品添加劑嗎啉脂肪酸鹽果蠟
- 毛澤東思想課件-第七章 毛澤東思想的活的靈魂
- 公共關(guān)系效果的評估課件
- 建筑施工安全員理論考核試題與答案
- 高速公路用地勘測定界及放線定樁技術(shù)標書
- 建筑工程節(jié)后復(fù)工自查表
- 華萊士標準化體系
- 快捷smt全自動物料倉儲方案
- keysight眼圖和抖動噪聲基礎(chǔ)知識與測量方法
- 鍋爐補給水陰陽混床操作步序表
評論
0/150
提交評論