Asp編碼優(yōu)化技巧(一)
發(fā)布時間:2008-08-21 閱讀數(shù): 次 來源:網(wǎng)樂原科技
ASP(Active Server Page)是Microsoft公司推出的基于PWS(Personal Web Server)&IIS(Internet Information Server)平臺的、基于ISAPI(InternetServiceAPI)原理的動態(tài)網(wǎng)頁開發(fā)技術(shù),目前日趨成熟完善。在這里僅就代碼優(yōu)化進行一些簡單討論。
1、聲明VBScript變量
在ASP中,對vbscript提供了強勁的支持,能夠無縫集成vbscript的函數(shù)、方法,這樣給擴展ASP的現(xiàn)有功能提供了很大便利。由于ASP中已經(jīng)模糊了變量類型的概念,所以,在進行ASP與vbscript交互的過程中,很多程序員也慣于不聲明vbscript的變量,這樣加重了服務(wù)器的解析負擔,進而影響服務(wù)器的響應(yīng)請求速度。鑒于此,我們可以象在VB中強制用戶進行變量聲明一樣在vbscript中強制用戶進行變量聲明。實現(xiàn)方法是在ASP程序行首放置。
2、對URL地址進行編碼
在我們使用asp動態(tài)生成一個帶參數(shù)URL地址并進行跳轉(zhuǎn)時,在IE中解析很正常,但在NetScrape瀏覽時卻有錯誤如下:
HTTP Error 400
400 Bad Request
Due to malformed syntax, the request could not be understood by the server.
The client should not repeat the request without modifications.
解決方法是對生成的URL參數(shù)使用ASP內(nèi)置server對象的URLencode方法進行URL編碼,例子如下:
<%
URL="xur.asp"
var1="username=" & server.URLencode("xur")
var2="&company=" & server.URLencode("xurstudio")
var3="&phone=" & server.URLencode("021-53854336-186")
response.redirect URL & "?" & var1 & var2 & var3
%>
3、清空對象
當使用完對象后,首先使用Close方法來釋放對象所占用的系統(tǒng)資源;然后設(shè)置對象值為“nothing”釋放對象占用內(nèi)存。當年,我就是在一張頁面上創(chuàng)建了百余個沒有清空對象的記錄集而崩潰了我的IIS 。下面的代碼使用數(shù)據(jù)庫內(nèi)容建立一個下拉列表。代碼示例如下:
<% myDSN="DSN=xur;uid=xur;pwd=xur"
mySQL="select * from authors where AU_ID<100"
set conntemp=server.createobject("adodb.connection")
conntemp.open myDSN
set rstemp=conntemp.execute(mySQL)
if rstemp.eof then
response.write "數(shù)據(jù)庫為空"
response.write mySQL
conntemp.close
set conntemp=nothing
response.end
end if%>
<%do until rstemp.eof %>
<%
rstemp.movenext
loop
rstemp.close
set rstemp=nothing
conntemp.close
set conntemp=nothing
%>
4、使用字符串建立SQL查詢
使用字符串來建立查詢并不能加快服務(wù)器的解析速度,相反,它還會增加服務(wù)器的解析時間。但在這里仍然推薦使用字符串代替簡單的查詢語句來進行查詢。這樣做的好處是,可以迅速發(fā)現(xiàn)程序問題所在,從而便利高效地生成程序。示例如下:
<%mySQL= ""select * "
mySQL= mySQL & "from publishers"
mySQL= mySQL & "where state='NY'"
response.write mySQL
set rstemp=conntemp.execute(mySQL)
rstemp.close
set rstemp=nothing
%>
5、使用case進行條件選擇
在進行條件選擇的時候,盡量使用case語句,避免使用if語句。使用case語句,可以使程序流程化,執(zhí)行起來也比if語句來的快。示例如下:
<%
FOR i = 1 TO 1000
n = i
Response.Write AddSuffix(n) & "<br>"
NEXT
%>
<%
Function AddSuffix(num)
numpart = RIGHT(num,1)
SELECT CASE numpart
CASE "1"
IF InStr(num,"11") THEN
num = num & "th"
ELSE
num = num & "st"
END IF
CASE "2"
IF InStr(num,"12") THEN
num = num & "th"
ELSE
num = num & "nd"
END IF
CASE "3"
IF InStr(num,"13") THEN
num = num & "th"
ELSE
num = num & "rd"
END IF
CASE "4"
num = num & "th"
CASE ELSE
num = num & "th"
END SELECT
AddSuffix = num
END FUNCTION
%>