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