ASP應(yīng)用技巧15則(下)
發(fā)布時間:2008-08-04 閱讀數(shù): 次 來源:網(wǎng)樂原科技
*技巧6:避免重復(fù)定義數(shù)組
當(dāng)我們在使用dim時,避免重新定義數(shù)組。因為你可能要用redim去重新定義數(shù)組的大小。至于要做這樣的操作的話,如果你的機器內(nèi)存不是很大,那么最好在一開始就考慮到最壞的打算去設(shè)置數(shù)組的長度或者設(shè)置最佳狀態(tài)時的長度,在非常必要時才使用redim。當(dāng)然這樣并不意味著要去增加內(nèi)存,如果你不是很需要的話。
以下舉例說明不恰當(dāng)?shù)氖褂胷edim
<%
dim MyArray()
Redim MyArrray(2)
MyArray(0) = "hello"
MyArray(1) = "good-bye"
.
.
.
some other code where you end up needing
more space happens then ...
Redim Preserve MyArray(5)
MyArray(2) = "more stuff"
MyArray(3) = "even more stuff"
MyArray(4) = "yet more stuff"
%>
其實在開始就定義myarray(5),而以后需要的話再用redim去增加他的大小,這樣的話可能會占用一些內(nèi)存,但速度就要快得多了。
*技巧7:避免公用(全局)變量
不要使用用public定義的變量。如果你是寫vbscript或在ActiveX控件或java applet中存取變量,那么盡可能避免公用變量。public關(guān)鍵字通常是為以后使用設(shè)計的,既然public不能給你帶來什么好處,那最好還是用dim吧。
*技巧8:使用絕對路徑
如果可能的話盡量避免使用相對路徑,而使用絕對路徑。使用相對路徑將需要IIS返回當(dāng)前服務(wù)器路徑,這就意味著對IIS的特殊請求造成執(zhí)行速度低下。
注:慢點就慢點唄,使用相對路徑移植什么的都方便得多呀。
*技巧9:使用"Dictionary"對象
VBScript中提供的dictionary對象可提供快速查找和任意帶關(guān)鍵字?jǐn)?shù)據(jù)的存儲。通過dictionary對象可以根據(jù)關(guān)鍵字存取數(shù)組中的各項數(shù)據(jù),這樣就能更快地找到在內(nèi)存中不連續(xù)的內(nèi)容(因為你是指定你正在使用的關(guān)鍵字,而不是要知道對象在數(shù)組中存放的位置)。如果你要查找的是非線性的關(guān)鍵字?jǐn)?shù)據(jù),使用dictionary對象就要快得多了。
然而,如果關(guān)鍵字?jǐn)?shù)據(jù)在內(nèi)存中是連續(xù)的,那么數(shù)組在查找、存儲數(shù)據(jù)起來將更快。同時也需要注意的是在dictionary中建立索引要比在數(shù)組中慢。你應(yīng)該選擇對你來說效果最好的數(shù)據(jù)結(jié)構(gòu)。
*技巧10:充分利用瀏覽器的回退功能
如果你使用的是個smart的瀏覽器,那么他會幫你做很多的回退工作,只要用得著,不妨多用用。那么,通過你的腳本執(zhí)行回退,當(dāng)有任何錯誤發(fā)生時你可以回到前面去,并從后訪問數(shù)據(jù)庫。但要記住的是,當(dāng)你訪問服務(wù)器上存在的數(shù)據(jù)庫時就要執(zhí)行一次對數(shù)據(jù)庫的操作。如果你要返回的那個表單有很多變量的話,那就有點劃不來了。如果你確實知道你需要在客戶端執(zhí)行很多代碼,那么為了加快執(zhí)行速度把代碼移到客戶端。當(dāng)你在客戶端運行時,處理器就歸你了,服務(wù)器呢,只好用他自身的處理能力去處理他所接到的請求。
還有個好辦法,如果你使用的表單中用了很多服務(wù)器端的腳本并且有不少條件輸入,那么最好把這些觸發(fā)反應(yīng)的代碼放到客戶端腳本引擎中去(比如vbscript,javascript)。忽略這些,服務(wù)器代碼運行得就快了,因為對于那些不是很必要的代碼就不送到服務(wù)器端執(zhí)行了。當(dāng)然這僅對那些比較小的代碼適用,至于大的嘛,就不太合適了。
*技巧11:避免使用服務(wù)器端變量
通過服務(wù)器端變量進(jìn)行訪問數(shù)據(jù)時,就需要web向服務(wù)器提出請求,然后收集所有的服務(wù)器端變量,而不僅僅只是你請求的那個變量。這就類似于你要從發(fā)霉閣樓的盒子里找一樣特定的東西。當(dāng)你要找那個東西時,首先要從閣樓里找到盒子。當(dāng)你請求一個變量時服務(wù)器也是一樣,當(dāng)遇到你請求的哪個變量時觸發(fā)執(zhí)行,然后再去請求那些不會引起執(zhí)行點的變量。
*技巧12:使用"option explicit"
在asp文件中寫上<% option explicit%>。和c不同,vb允許你在不強制定義變量之前就可以使用該變量。把option explicit打開有助于識別沒定義的變量,使用沒定義的變量就會出現(xiàn)錯誤提示信息。同時也可以使那些沒申明的局部變量非法。沒申明的局部變量和全局變量一樣慢(比定義過的局部變量要慢一倍)。把option explicit打開自然能幫你把這些小蟲子從你的代碼中去掉。
*技巧13:將采集到的值拷貝到本地(局部)變量當(dāng)中
如果有一些值是你要反復(fù)用到的話,把這些值用局部變量的形式拷貝到客戶端。每次當(dāng)你要用到這些值時,就省去了你去那一堆值里面去找了,這樣也就加快了腳本運行速度。
*技巧14:謹(jǐn)慎使用session對象
使用session對象可以存儲一些用戶特殊信息。當(dāng)用戶在該應(yīng)用程序的不同頁之間跳轉(zhuǎn),存放在session 中的變量不會丟失,相反,這些變量在整個用戶過程中一直保留。當(dāng)一個頁面被一個未有session的用戶請求時,web服務(wù)器會自動建立一個session對象。當(dāng)session的時間限制到了或是被中斷了時,服務(wù)器就會撤消session對象。為了避免這種情況,你可以把session屬性關(guān)閉。然而在iis3.0中在每個應(yīng)用中的session屬性不能關(guān)閉。把整個服務(wù)器中的session關(guān)閉速度會快一些,但這樣會損失很多功能。最好是需要時謹(jǐn)慎使用session對象
當(dāng)你在整個應(yīng)用中都用到session對象時,注意要快點用,否則session對象將會被重置。在iis4.0中,每個應(yīng)用基礎(chǔ)中的session狀態(tài)都可以被激活,也可以在specified.asp文件中被取消。
*技巧15:做性能測試
這就沒什么好翻的,一把好刀就是要多磨一磨,好程序也是一樣,多用用,就知道毛病在哪了 。
調(diào)諧不是技術(shù),是藝術(shù)!
優(yōu)化你的程序不是一件小事,需要你從一點一滴做起,從每一個細(xì)節(jié)做起,并且養(yǎng)成良好的編程習(xí)慣。我是學(xué)語言的,喜歡有嚴(yán)正的風(fēng)格。