技巧之一提高使用Request集合的效率 訪問一個ASP集合來提取一個值是費時的
占用計算資源的過程
因為這個操作包含了一系列對相關集合的搜索
這比訪問一個局部變量要慢得多
因此
如果打算在頁面中多次使用Request集合中的一個值
應該考慮將其存貯為一個局部變量
例如將代碼寫成下面的形式以加快腳本引擎處理速度
strTitle=Request
Form(
Title
)
strFirstName=Request
Form(
FirstName
)
strLastName=Request
Form(
LastName
)
If Len(strTitle) Then strTitle=strTitle &
If strFirstName=
Then strFullName=strTitle &
& strLastName
Elseif Len(strFirstName)=
Then
strFullName=strTitle & strFirstName &
& strLastName
Else
strFullName=strTitle & strFirstName &
& strLastName
End If
技巧之二直接訪問適當的集合 如果不是別無選擇
否則不要使用strPage=Request(
page
)的這樣的形式來獲取參數
因為這將按順序搜索全部的集合—QueryString
Form
Cookies
ClientCertificate
ServerVarible直到發現第一個匹配值的名稱
這樣做比直接訪問適當的集合效率低
並且是不安全的
除非能絕對保證這個值不會出現在另外一個集合中
例如
可能希望搜索滿足客戶請求的WEB服務器名稱
這通過出現在每個查詢中的Request
ServerVarables集合中尋找
SERVER_NAME
來實現
然而
假如其他的集合也包含名為
SERVER_NAME
的值(鍵名不區分大小寫)
當使用Request(
server_Name
)時
就會得到錯誤的結果
總而言之
應盡可能直接訪問適當的集合
技巧之三
在費時操作前使用Response
IsClientConnected屬性
使用Response
IsClientConnected是觀察用戶是否仍連到服務器並正在載入ASP創建的網頁的有用方式
如果用戶斷開連接或停止下載
我們就不用再浪費服務器的資源創建網頁
因為緩沖區內容將被IIS丟棄
所以
對那些需要大量時間計算或資源使用較多的網頁來說
值得在每一階段都檢查游覽者是否已離線
…… Code to create first part of the page
If Response
IsClientConnected Then
Response
Flush
Else
Response
End
End If
…… Code to create next part of page
技巧之四優化ASP中的ADO操作 通常面言
數據構成了WEB站點的實際內容
所以
優化ADO操作以加速ASP代碼執行
十分有用
a
僅選擇所需的列
當打開ADO記錄集時
除非需要獲得所有的列
否則不應自動地使用表名(即SELECT *)
使用單獨的列意味著將減少發送到服務器或從服務器取出的數據量
即使需要使用全部列
單獨地命名每個列也會獲得最佳的性能
因為服務器不必再解釋這些列的名字
b
盡可能的使用存儲過程
存儲過程是預先編譯的程序
含有一個已經准備好的執行計劃
所以比SQL語句執行更快
c
使用適當的光標和鎖定模式
如果所做的全部工作只是從記錄集中讀取數據
並將其顯示在屏幕上
那麼就使用缺省的只能前移
只讀的記錄集
ADO用來維護記錄和鎖定的細節的工作越少
執行的性能就越高
d
使用對象變量
當遍歷記錄集時一個肯定能提高性能的方法是使用對象變量指向集合中的成員
例如
While Not RsGc
EOF
Response
Write
工程名稱
& RsGc(
GcMC
) &
(工程代碼
& RsGc(
GcCode
) &
)
RsGc
MoveNext
Wend
可以用改寫為下面的代碼以加快執行
set GcMc=RsGc(
GcMc
)
set GcCode=RsGc(
GcCode
)
While Not rsGc
EOF Response
Write
工程名稱
& GcMc &
(工程代碼
& GcCode &
)
RsGc
MoveNext
Wend
新的代碼建立了對象變量的引用
所以可以使用對象變量而不是實際的變量
這意味著腳本引擎的工作減少了
因為在集合中進行索引的次數變少了
技巧五不要混用腳本引擎 我們知道
ASP頁面中既可以使用VBScript
也可以使用JScript
但是在同一個頁面上同時使用JScript和VBScript則是不可取的
因為服務器必須實例化並嘗試緩存兩個(而不是一個)腳本引擎
這在一定程度上增加了系統負擔
因此
從性能上考慮
不應在同一頁面中混用多種腳本引擎
From:http://tw.wingwit.com/Article/program/net/201311/13026.html