Asp編碼優化技巧8則

2021-04-23 22:35:33 字數 4104 閱讀 3182

asp(active server page)是microsoft公司推出的基於pws(personal web server)&iis(internet information server)平台的、基於isapi(internetserviceapi)原理的動態網頁開發技術,目前日趨成熟完善。在這裡僅就**優化進行一些簡單討論。

1、宣告vbscript變數

在asp中,對vbscript提供了強勁的支援,能夠無縫整合vbscript的函式、方法,這樣給擴充套件asp的現有功能提供了很大便利。由於asp中已經模糊了變數型別的概念,所以,在進行asp與vbscript互動的過程中,很多程式設計師也慣於不宣告vbscript的變數,這樣加重了伺服器的解析負擔,進而影響伺服器的響應請求速度。

鑑於此,我們可以象在vb中強制使用者進行變數宣告一樣在vbscript中強制使用者進行變數宣告。實現方法是在asp程式行首放置<% option explicit%>。

解決方法是對生成的url引數使用asp內建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方法來釋放物件所占用的系統資源;然後設定物件值為「nothing」釋放物件占用記憶體。當年,我就是在一張頁面上建立了百餘個沒有清空物件的記錄集而崩潰了我的iis 。下面的**使用資料庫內容建立乙個下拉列表。**示例如下:

<% 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 "資料庫為空"

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查詢

使用字串來建立查詢並不能加快伺服器的解析速度,相反,它還會增加伺服器的解析時間。但在這裡仍然推薦使用字串代替簡單的查詢語句來進行查詢。這樣做的好處是,可以迅速發現程式問題所在,從而便利高效地生成程式。示例如下:

<%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語句,可以使程式流程化,執行起來也比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

%> 6、使用adovbs.inc檔案中定義的常量開啟記錄集

開啟記錄集時,可以定義記錄集開啟的游標型別和鎖定型別。在adovbs.inc檔案中定義了一些常量來定義這些型別。adovbs.inc檔案儲存在/inetpub/iissamples/iisamples目錄下面。下面列舉幾個常用的游標型別和鎖定型別。

游標型別:adopenfowardonly游標只能向前;adopenkeyset游標可向前或者向後,如一使用者新增記錄,新記錄不會出現在記錄集中;adopendynamic游標動態隨意;adopenstatic記錄集不對其他使用者造成的記錄修改有所反映。

鎖定型別:adlockreadoney不能修改記錄集中的記錄;adlockpessimistic在編輯一條記錄時鎖定它;adlockoptimstic呼叫記錄集update方法時才鎖定記錄;adlockbatchopeimstic記錄只能成批更新。

<!--#include virtual="/adovbs.inc" -->

<% connectme="dsn=xur;uid=xur;pwd=xur"

sqltemp="select * from publishers where name='xur'"

set rstemp=server.createobject("adodb.recordset")

rstemp.open sqltemp, connectme, adopenstatic,adlockoptimstic

response.write rstemp.recordcount & " records in<br>" & sqltemp

rstemp.close

set rstemp=nothing

%> 這樣就可以在站點任何**中做類似引用:

同樣地,可以在session_onstart函式中建立記錄集物件

<%sub session_onstart

set session("rstemp")=server.createobject("adodb.recordset")

end sub %>

然後在站點也麵中進行如下引用:

<% mysql="select * from publishers where state='xur'

set session("rstemp")=conntemp.execute(mysql)

%>

asp網頁提公升速度方法5則 asp技巧

技巧之一 提高使用request集合的效率 訪問乙個asp集合來提取乙個值是費時的 占用計算資源的過程。因為這個操作包含了一系列對相關集合的搜尋,這比訪問乙個區域性變數要慢得多。因此,如果打算在頁面中多次使用request集合中的乙個值,應該考慮將其存貯為乙個區域性變數。例如將 寫成下面的形式以加快...

Linux 的經典技巧 8 則

1 處理特殊的檔名 假設linux系統中有乙個檔案名叫 ee 如果我們想對它進行操作,例如要刪除它,按照一般的刪除方法在命令列中輸入rm ee命令,介面會提示我們是 無效選項 invalid option 原來由於檔名的第乙個字元為 linux把檔名當作選項了,我們可以使用 符號來解決這個問題,輸入...

ASP編碼必備的8條原則

asp是active server page的縮寫,意為 動態伺服器頁面 asp是微軟公司開發的代替cgi指令碼程式的一種應用,它可以與資料庫和其它程式進行互動,是一種簡單 方便的程式設計工具。在這裡僅就 優化進行一些簡單討論。1 宣告vbscript變數 在asp中,對vbscript提供了強勁的...