論文簡介
●51●Computer Era No. 22006網(wǎng)站系統(tǒng)的優(yōu)化吳堅(jiān)(浙江建設(shè)職業(yè)技術(shù)學(xué)院,浙江杭州311231)摘要:提高動(dòng)態(tài)網(wǎng)站性能一直是網(wǎng)站開發(fā)者努力的目標(biāo)。文章討論了影響ASP網(wǎng)站的主要因素,提出了改善這些因素的一些方法,關(guān)鍵詞: ASP;動(dòng)態(tài)網(wǎng)站; ADO;優(yōu)化0引言大的數(shù)據(jù)在服務(wù)器上緩存可提高檢索速度。而對(duì)經(jīng)常不用的數(shù)提高網(wǎng)站的運(yùn)行效率、縮短服務(wù)器響應(yīng)時(shí)間,這是網(wǎng)站開據(jù)的緩存是對(duì)內(nèi)存的浪費(fèi)。發(fā)者和上網(wǎng)瀏覽者一直關(guān)心的問題。除了網(wǎng)絡(luò)硬件環(huán)境外,ASP緩存的對(duì)象可以是不經(jīng)常改變的數(shù)據(jù),也可以是組合框、代碼本身.網(wǎng)站編程設(shè)計(jì)技術(shù),如HTML代碼腳本語言、ADODHTML代碼、擴(kuò)展標(biāo)記語言(XML)字符串、菜單項(xiàng)和站點(diǎn)配置訪問數(shù)據(jù)庫以及IIS的配置等均影響著動(dòng)態(tài)網(wǎng)頁的運(yùn)行效率。變量等。要緩存數(shù)據(jù)表達(dá)式而不是數(shù)據(jù)本身。經(jīng)常變化的ASP頁不應(yīng)緩存(比如整個(gè)產(chǎn)品目錄),而采用預(yù)產(chǎn)生HTML的方法。1優(yōu)化ASP代碼(2) 在Web服務(wù)器礞盤上緩存數(shù)據(jù)和HTML頁面1.1網(wǎng)站編程方法的改進(jìn)在內(nèi)存中緩存的數(shù)據(jù),可以以text或者XML文件格式在()動(dòng)態(tài)網(wǎng)頁中創(chuàng)建對(duì)象實(shí)例的兩種方法:第- 一種方法是Web 服務(wù)器硬盤上做緩存。也可以混合使用硬盤緩存數(shù)據(jù)以及用命令SERVER.CREATEOBJECT創(chuàng)建,即建即用;第二種方內(nèi)存緩存數(shù)據(jù),從而達(dá)到最佳緩存。法是用先聲明,不立即創(chuàng)建。只在需-般情況下,當(dāng)測試- -個(gè)單一ASP頁面的性能時(shí).從磁盤要時(shí)才使用資源,因此資源利用率比第一種方法要高。取回?cái)?shù)據(jù)不-定比從網(wǎng)絡(luò)數(shù)據(jù)庫中取回?cái)?shù)據(jù)快,但是緩存減少(2) Aplication和Sssion會(huì)耗費(fèi)服務(wù)器資源.所以應(yīng)避免了網(wǎng)絡(luò)數(shù)據(jù)庫的調(diào)用 .在大規(guī)模調(diào)用時(shí).將明顯提高網(wǎng)絡(luò)的吞使用。吐能力。緩存對(duì)于一個(gè)費(fèi)時(shí)的查詢結(jié)果是有用的,比如對(duì)于一1.2使用緩存提高訪問ASP程序的速度個(gè)復(fù)雜的存儲(chǔ)過程,或者大量的結(jié)果數(shù)據(jù)。緩存是傳統(tǒng)的以空間換取時(shí)間的做法。充分利用緩存,可ASP和COM提供了幾種建立基于磁盤緩沖配置的工具。以大大提高ASP程序的響應(yīng)速度。正確使用緩存,性能會(huì)有顯ADO 記錄集的Save(和Open0函數(shù)負(fù)責(zé)保存和調(diào)入磁盤上的著的提高。記錄集。另外還有一-些組件 : Scripting. FilesystemObject允許創(chuàng)[1) 在Web服務(wù)器上緩存數(shù)據(jù)建、讀取和寫文件;MSXML, Microsoft XML解析器隨InternetASP頁從后端數(shù)據(jù)存儲(chǔ)中檢索數(shù)據(jù),然后將結(jié)果轉(zhuǎn)換成超Explorer 而來,支持保存和裝入XML文檔;LookupTable對(duì)象文本標(biāo)記語言(HTML)。從內(nèi)存或本地硬盤中取回?cái)?shù)據(jù)比從后(比如 MSN.上使用)是從磁盤調(diào)入簡單列表的很好選擇。臺(tái)存儲(chǔ)設(shè)備中取回?cái)?shù)據(jù)快,因此,使用頻率高,或者是計(jì)算開銷另外,還應(yīng)考慮緩存磁盤數(shù)據(jù)的表達(dá)式,而不是數(shù)據(jù)本身。Computing. 2001:274~281and Distributed Proceeding,2001 :369~376[2] Buyya Rajkumar. High performance Cluster Computing6 Barak A,Laadan O, Shiloh A.Scalable Cluster Computing withArchitectures and System. Prentice Hal,000.MOSIX for LinxlJ.Proc.Linux Expo,1999.5:85-100[3] M Colajanni,et al. Dynamic Load Balancing in Geographically[7]郭成城,晏前柳.一種異構(gòu)Web服務(wù)器集群動(dòng)態(tài)負(fù)載均衡算法.什算Distributed Heterogeneous Web Servers (RI.Proc.of 18th IEEE機(jī)學(xué)報(bào),2005 2(28):179-184Int'1 Conf.On Distributed Computing System (ICDCS 1998),[8] Wllim Saling Self- silrity Upsets Data Traffic AssumptionsAmsterdam,The Netherlands,May 1998:295- -303.[J] IEEE Spectrum,1997.6:28- -29[4] lyengar Arun, MacNair Ed, Nguyen Thao. An analusis of Web[91G中國煤化Iapacity of a Web Severserver performance In:Proceeding of Global TelecommunicationsSymposium on InternetConference,1997.3: 1943-1947Ted |YHC N M H GA.UA,1997:61-71[5] asslcicio Emiliano, Tuci Salvatore. Static and Dynamic [10] 昊松濤等.請(qǐng)求速阜對(duì)集群Web服務(wù)器調(diào)度的影響,什算機(jī)左用scheduling algorthm for scalable Web server farm.In:研憲,2003.6: 139~140Proceedings of the IEEE 9th Euromicro Workshop on Parllel計(jì)算機(jī)時(shí)代2006年第2期●52●預(yù)處理的HTML可以存儲(chǔ)為htm或者.asp文件鏈接直接指向頁面的執(zhí)行效率。它們。使用諸如Xbuilder或者M(jìn)icrosoft SQL Server Intemet(1) ASP網(wǎng)頁在執(zhí)行時(shí)要耗費(fèi)服務(wù)器資源,因此只有在必發(fā)布類的商業(yè)工具,能夠自動(dòng)處理這些過程。而且,可以在.asp要時(shí)才使用 ASP頁面。能夠用HTML或客戶端腳本實(shí)現(xiàn)的地文件中包含HTML程序片斷。同樣,也可以使用FileSyste-方就不要用 ASP程序。mObject從磁盤上讀取HTML文件,或者使用XML for early(2)網(wǎng)頁圖像。HTML的頁面盡量避免使用圖像。加載圖像rendering 來做這個(gè)工作。時(shí),瀏覽器要向Web服務(wù)器請(qǐng)求調(diào)用,這種請(qǐng)求會(huì)降低頁面的1.3在Application或Session對(duì)象中保存經(jīng)常使用的數(shù)據(jù)加載速度.進(jìn)而影響速度。ASP的Application和Session對(duì)象為將數(shù)據(jù)暫存在內(nèi)存中(3)網(wǎng)頁框架。和圖像因素相似,在網(wǎng)頁里面使用框架也會(huì)提供了方便的容器。Session 數(shù)據(jù)是對(duì)每個(gè)用戶分別存儲(chǔ)的,而降低頁面的加載進(jìn)程。Application數(shù)據(jù)則在所有用戶之間共享。使用時(shí)可以將數(shù)據(jù)指(4)網(wǎng)頁表格。盡量避免表格嵌套得太多,繁雜的表格會(huì)影派到Application和Session對(duì)象中,這些數(shù)據(jù)在HTTP調(diào)用之響HTML的執(zhí)行效率。前保留在內(nèi)存中。這是對(duì)內(nèi)存中緩存數(shù)據(jù)的有效補(bǔ)充。應(yīng)將適5)去除多余的標(biāo)記符。當(dāng)?shù)拇a分別添加到Application. _OnStart)或Session. _OnStart()(6)減少注釋。這將會(huì)減少文件的大小,進(jìn)而提高加載速度。中。這些函數(shù)應(yīng)該在Giloal.asa中,如果沒有,可手工添加。(7)避免使用長文件名。在頁面里盡量使用相對(duì)路徑訪問數(shù)據(jù)可以用任何類型的變量存儲(chǔ),如可以保存在字符串或其他文件。整型變量中。從ADO記錄集中取出數(shù)據(jù)需要手工復(fù)制數(shù)據(jù)到2.2優(yōu)化腳本語言VBScripl變量中,每次一個(gè)字段,使用任意-個(gè)ADO記錄集的(1)控制ASP腳本大小。ASP 腳步本是逐行解釋執(zhí)行的,函數(shù)functions GetRowsO,GetString)或 者Save(都非??焖?腳本越長,所需時(shí)間也越長。具體操作時(shí)可以將程序轉(zhuǎn)換成服簡單。使用GetRows)返回記錄集數(shù)據(jù)的數(shù)組。務(wù)器端的組件。在具體使用時(shí),可以在Application或Session中緩存ADO(2)能用局部變量的,就不要用全局變量。程序運(yùn)行期間全記錄集本身,但是ADO必須是自由線程標(biāo)記的且需要使用局變量一直保存,占用服務(wù)器資源.降低執(zhí)行效率。discnnected rcordset 方式。否則就不能緩存ADO記錄集。(3)處理VBScript程序中的錯(cuò)誤。在VBScripl程序中,有當(dāng)在Application或Session中保存數(shù)據(jù)后,可以通過函數(shù)時(shí) 會(huì)出現(xiàn)意想不到的錯(cuò)誤,這時(shí)可以使用on error resume周期性地自動(dòng)更新數(shù)據(jù)。next。這條語句會(huì)使程序從緊隨產(chǎn)生錯(cuò)誤的語句之后繼續(xù)執(zhí)行,值得指出的是:不要在Application或者Session對(duì)象中緩或從緊隨最近-一次調(diào)用過程的語句繼續(xù)執(zhí)行。存大容量的數(shù)組,也不要在Application或者Session對(duì)象中緩(4) VBScript 程序中的變量聲明。VBScript 和JavaScript腳存數(shù)據(jù)庫連接。緩存ADO連接是不好策略。如果一個(gè)本沒有要求變量必須聲明,但是在編寫較大程序時(shí),難免會(huì)出Connection對(duì)象存儲(chǔ)在Aplication對(duì)象中,并在所有的頁面中現(xiàn)拼寫錯(cuò)誤, 而編譯器檢測不出,不容易調(diào)試。為了避免這種情使用,那么所有頁面將爭搶這一-連接。如果Connection對(duì)象存況的發(fā)生,在所有過程和腳本前都加上- -行語句<% OPTION儲(chǔ)在ASP Session 對(duì)象中,那么將為每個(gè)用戶創(chuàng)建數(shù)據(jù)庫連接,EXPLICT %>,要求所有變量均須聲明,減少拼寫錯(cuò)誤。這就會(huì)使連接池的優(yōu)勢不明顯,并給Web服務(wù)器和數(shù)據(jù)庫帶(5)在VBScript中盡量把對(duì)象變量轉(zhuǎn)換成本地變量,因?yàn)閬聿槐匾膲毫???梢圆痪彺鏀?shù)據(jù)庫連接,而是在使用ADO的讀本地變量比讀對(duì)象變量要快許多。每個(gè)ASP頁面中創(chuàng)建和刪除ADO對(duì)象。這是有效的,因?yàn)镮s3優(yōu)化ADO的數(shù)據(jù)庫操作命令內(nèi)嵌了數(shù)據(jù)庫連接池。更準(zhǔn)確地說,IS自動(dòng)啟用OLEDB和選擇合適的SQL指令,優(yōu)化ADO的數(shù)據(jù)庫操作。ODBC連接池,這就能確保在每個(gè)頁面上創(chuàng)建和刪除連接是有(1) ASP最強(qiáng)大和主要的用途之一就是對(duì)數(shù)據(jù)庫進(jìn)行操效的。作,在數(shù)據(jù)庫操作中不要任意使用“SELECT ..形式的因?yàn)檫B接的記錄集存儲(chǔ)-一個(gè)到數(shù)據(jù)庫連接的引用,所以不SQL查詢語句。應(yīng)將連接的記錄集緩存在Application或Session對(duì)象中。但是,(2)使用復(fù)雜的SQL來代替- -堆簡單的SQL語句。因?yàn)閺?fù)可以安全地緩存斷開連接的記錄集,它們不保存到其數(shù)據(jù)連接雜的SQL語句執(zhí)行效率高于一堆簡單SQL語句。有多個(gè)查詢的引用。要斷開記錄集連接,執(zhí)行下面程序:時(shí),要善于使用JOIN。Set rs = Server.CreateObject('ADODB.RecordSet')(3)盡量避免使用可更新的sQL語句。rs.CursorLocation = adUseClient程序1:rs.Open strQuery, strProvRs=Co中國煤化工WHEREAuthorlD=5",rs.ActiveConnection = Nothing3,3)YHCNMHG2優(yōu)化HTML代碼Rs("Name2.1影響HTML的因素Rs.Update()除了客戶端的硬件和網(wǎng)絡(luò)帶寬,下列因素也影響著HTML程序2:●53●Computer Era No. 2 2006strSQL="UPDATE Authors SET Name=' 王一' WHERE數(shù)據(jù)庫服務(wù)器的性能。因此“連接池”機(jī)制就很有用,它可以在AuthorID=5"一定程度避免連接的經(jīng)常性建立和中斷。Conn.excute strSQL(2)連接超時(shí)比較程序1和程序2,功能相同,都是將編號(hào)為5的作者姓利用Connection對(duì)象的Connectiontimeout屬性.可以限名改為“王- -”。但是由于程序1中對(duì)數(shù)據(jù)庫總共讀寫了兩次, .制放棄嘗試連接的時(shí)間,如果連接不成功,則發(fā)出錯(cuò)誤信息。浪費(fèi)了時(shí)間;而程序2執(zhí)行-次就夠了。(3)胯頁達(dá)接(4)更新數(shù)據(jù)庫時(shí),盡量采用批處理更新。將所有SQL組如果有許多,用戶需要連接到同一-個(gè) ASP數(shù)據(jù)庫應(yīng)用程序,成一個(gè)大的批處理SQL,并- -次運(yùn)行, 這比-一個(gè)一個(gè)更新數(shù)據(jù)可以將連接字符串置于ASP的Application對(duì)象中,重復(fù)使用要有效得多。數(shù)據(jù)庫連接。這就是所謂的跨頁連接。4優(yōu)化后臺(tái)數(shù)據(jù)庫(4)預(yù)先編譯優(yōu)化后臺(tái)數(shù)據(jù)庫,應(yīng)從兩方面入手:數(shù)據(jù)庫存儲(chǔ)和數(shù)據(jù)庫在ADO的Command對(duì)象中,有一一個(gè)Prepared屬性.當(dāng)該連接。屬性設(shè)為True時(shí),表示已經(jīng)對(duì)數(shù)據(jù)庫查詢信息進(jìn)行預(yù)先編譯,4.1后臺(tái)數(shù)據(jù)庫結(jié)構(gòu)這樣有利于提高服務(wù)器的執(zhí)行效率。設(shè)計(jì)一個(gè)好的數(shù)據(jù)庫結(jié)構(gòu)可以大大提高程序的運(yùn)行速度。(5)吳閉遣接假設(shè)已經(jīng)設(shè)計(jì)好了數(shù)據(jù)庫結(jié)構(gòu),還可以從以下方面提高程序的要及時(shí)關(guān)閉打開的記錄集對(duì)象以及連接(Conection)對(duì)象。運(yùn)行速度:記錄集對(duì)象和連接對(duì)象耗費(fèi)系統(tǒng)資源相當(dāng)大,它們的可用數(shù)量(1)如果條件允許,最好將數(shù)據(jù)庫服務(wù)器和Web服務(wù)器分開。有限。如果打開太多的記錄集對(duì)象以及連接對(duì)象而最后卻沒有(2)在訪問數(shù)據(jù)庫時(shí),盡可能地用存儲(chǔ)過程而不是SQL查關(guān)閉它們,可能會(huì)出現(xiàn)ASP程序剛開始的時(shí)候運(yùn)行速度很快,后來詢,因?yàn)榍罢咭呀?jīng)過了預(yù)編譯,運(yùn)行速度更快。同時(shí)讓數(shù)據(jù)庫返就越來越慢,甚至導(dǎo)致服務(wù)器死機(jī)的現(xiàn)象?;厮枰臄?shù)據(jù)。5優(yōu)化ls(3)分配適當(dāng)?shù)臄?shù)據(jù)庫Buffers會(huì)提高程序的性能。導(dǎo)致Is服務(wù)性能不佳的原因有兩個(gè): - 一個(gè)是管理員在安(4)盡可能使用SQL Server 而不是Access因?yàn)锳ccess是裝.配置IIS的時(shí)候沒有進(jìn)行優(yōu)化或者配置錯(cuò)誤;另一個(gè)則是隨基于文件的數(shù)據(jù)庫,共享性能很差。數(shù)據(jù)庫連接盡量使用著運(yùn)行的服務(wù)種類訪問人數(shù)的增加,服務(wù)器的硬件配置已不OLEDB和非DSN方式。能滿足要求。(5)建立記錄集Rescordset時(shí)要合理設(shè)置數(shù)據(jù)游標(biāo)和鎖定(1) IIS高速緩存是對(duì)IIS進(jìn)行優(yōu)化時(shí)要考慮的最重要的手方式。因?yàn)樵诓煌姆绞较翧SP會(huì)以不同的方式操縱數(shù)據(jù)庫。段之一。服務(wù)器保留了一部分內(nèi)存空間用作lIs高速緩存,為將(6)數(shù)據(jù)庫索引。合理的索引能顯著地提高數(shù)據(jù)庫系統(tǒng)的來的請(qǐng)求存儲(chǔ)對(duì)象,這樣IIS就可從高速緩存中檢索對(duì)象而不性能。在Where子中出現(xiàn)的字段,應(yīng)該首先考慮建立索引;為用從硬盤中檢索。調(diào)整IIS高速緩存的容量需要修改注冊(cè)表。需要排序的字段建立索引,運(yùn)行會(huì)快些。(2)使us使用處理器時(shí)間最長。服務(wù)器的CPU處理器能4.2數(shù)據(jù)庫訪問力總是有限的。應(yīng)用程序占用處理器的時(shí)間最長,誰的性能就數(shù)據(jù)庫性能優(yōu)化是指通過某種管理方式提升數(shù)據(jù)的響應(yīng)能得到最大的提高。方法是:在NT的控制面板中,雙擊系統(tǒng)圖能力,如建立索引,分布復(fù)制等。利用ASP對(duì)數(shù)據(jù)庫性能優(yōu)化的標(biāo);單擊性能標(biāo)簽;在應(yīng)用程序性能下將游標(biāo)拖到None的位主要方式有如下幾種: .置。這樣就可以使所有正在運(yùn)行的服務(wù),包括Is,使用處理器(1)共享連接的時(shí)間達(dá)到最大值。在ADO的處理模式中,應(yīng)先建立與數(shù)據(jù)庫的連接,這是通(3)服務(wù)器屬性設(shè)置。在服務(wù)器屬性里有一項(xiàng)可以使網(wǎng)絡(luò)過ADO的對(duì)象Connection 來完成的,它連接到ODBC或應(yīng)用程序的總處理能力最大的選項(xiàng),必要時(shí)可以選擇。OLEDB接口提供的數(shù)據(jù)源上。Connection對(duì)象有非常友好的共享機(jī)制,程序開發(fā)者可以6結(jié)束語創(chuàng)建多個(gè)Command對(duì)象實(shí)例,而只需建立-個(gè)Conection對(duì)網(wǎng)站系統(tǒng)的優(yōu)化一直是網(wǎng)站開發(fā)者努力的目標(biāo),想用一種象實(shí)例,多個(gè)Command共享- -個(gè)Connection決不會(huì)引發(fā)任何方法或- -種技術(shù)或一種工具達(dá)到網(wǎng)站系統(tǒng)的優(yōu)化,是不可能矛盾或錯(cuò)誤,甚至這幾個(gè)Command命令可以存在于多個(gè)不同的,也是不現(xiàn)實(shí)的。本文只是從網(wǎng)站編程設(shè)計(jì)技術(shù)這個(gè)角度來探討網(wǎng)站系統(tǒng)的優(yōu)化。具體在開發(fā)網(wǎng)站時(shí),需要運(yùn)用多種技術(shù)的Web頁面上。和方法“目的。一個(gè)Connection與數(shù)據(jù)源建立連接以后,多個(gè)Command中國煤化工就可以通過映像數(shù)據(jù)庫發(fā)出不同的查詢命令,多個(gè)網(wǎng)頁可分別參考文建立各自的連接,從而使連接簡單、服務(wù)器負(fù)載下降,效率提[1]張宏MYHCN M H Gg工土出版性.2003.高。除此以外, ADO還有一種稱為“連接池”的機(jī)制。由于經(jīng)常[2] 張景峰主編.ASP程序設(shè)計(jì)教程.中國水利水電出版社,2003.建立和中斷數(shù)據(jù)庫,連接的Web數(shù)據(jù)庫應(yīng)用程序可能會(huì)降低[3)] 劉瑞新主編. ASP網(wǎng)絡(luò)數(shù)據(jù)庫開發(fā)機(jī)械工業(yè)出版社,2004.
論文截圖
版權(quán):如無特殊注明,文章轉(zhuǎn)載自網(wǎng)絡(luò),侵權(quán)請(qǐng)聯(lián)系cnmhg168#163.com刪除!文件均為網(wǎng)友上傳,僅供研究和學(xué)習(xí)使用,務(wù)必24小時(shí)內(nèi)刪除。