ASP講座之十一:結語-給您一些建議
作者:Eve Cole
更新時間:2009-05-30 19:54:51
一、 有關ASP頁面及程式碼的優化
1.盡量用!--#include file指令取代框架結構。
以前比較流行的一種設計模式就是使用一個框架(Frame)放置網站的目錄結構,在另外的框架中顯示內容,這樣的設計思路是必不可少的,但卻會影響到網站性能。在具體實現方式上,完全可使用!--#include file指令來設計一個導航條,至於include的使用,早在講座一中就已經舉例說明。
2.盡量不要讓來訪者在毫無變化的等待中消磨時光。
不要使用這樣的方式,先進行處理,然後再將處理結果輸出到頁面,造成在處理的這段時間內,客戶端頁面沒有任何變化。一個再有耐心的人也會因此而感到無比懊惱,應該盡量採用邊處理,邊輸出的方式。其實我們在講座八中介紹的分頁顯示技術就是這個道理,下面再舉一個例子。
程式碼一(先處理後顯示):
<table width=”100”>
<% while not rs.eof %>
<tr>
<td><%=rs(“name”)%></td>
<td><%=rs(“email”)%></td>
</tr>
<% rs.movenext
wend %>
</table>
程式碼二(邊處理邊顯示,處理一條,顯示一條):
<% while not rs.eof %>
<table width=”100” border=0>
<tr>
<td><%=rs(“name”)%></td>
<td><%=rs(“name”)%></td>
</tr>
</table>
<% rs.movenext
wend %>
3.避免使用Session變量,尤其是在頁面之間使用Session變數。
使用會話變數會降低效率,原因在於不僅需要為每位訪客建立一個變量,而且直到訪客離開20分鐘後(預設Timeout設定),會話變數所佔記憶體才會被釋放。
4.不要盲目使用資料庫。
初學者往往對資料庫有所心得之後,動不動便使用資料庫,一來可以溫故,二來展示一下自己的資料庫技術。我的建議是可以用別的方法時最好少使用資料庫,存取資料庫總是消耗伺服器資源。例如你可以使用文字文件,此外,對一些不大改變而又經常使用的數據,可使用Application物件將資料存放在數組變數中,從記憶體中獲取資料要比從資料庫中快得多。
5.使用Option Explicit強制聲明變數。這可以提高ASP腳本執行效率,並且減少腳本出錯的可能性,應該要養成一個好的習慣。
6.盡可能使用用Dim定義的局部變數。存取局部變數比存取全域變數或未宣告的變數快得多。
7. HTML程式碼和ASP程式碼最好不要頻繁交叉,盡量讓ASP程式碼或HTML程式碼連成片,以提升腳本運作效率(這跟打遊戲的道理差不多)。
如果你是在程式碼中的好幾個地方用<%=...%>格式書寫輸出結果,那麼考慮一下把這些結果合到一塊,用一個Response.Write語句寫出來,如講座二中的例wuf9 .asp。不要把HTML程式碼和VBScript腳本散佈得太開,盡量寫成塊的HTML和vbscript腳本。
8.適當使用絕對路徑如果可能的話盡量避免使用相對路徑,而使用絕對路徑。使用相對路徑將需要IIS返回目前伺服器路徑,這意味著對IIS的特殊請求造成執行速度低。不過話說回來,慢是慢了點,然而使用相對路徑可以大大增強程序的靈活性和可移植性,關鍵在於恰當的處理這對矛盾。
9. ASP腳本效能測試你可以使用一些工具軟體來測試你的ASP腳本執行所花時間,尤其是覺得該腳本有問題時。這裡提供幾個,具體用法請看幫忙。
(1) Microsoft的InetMonitor工具:用來監控和測試整個網站的處理能力。下載網址:http://www.microsoft.com/siteserver/site/DeployAdmin/InetMonitor.htm。
(2) Microsoft的Web Capacity AnalysisTool(WCAT)。包含在Microsoft BackOffice Resource Kit光碟中,或也可以到Microsoft網站下載。
(3) Softwing的ASP Profiling Component,下載網址:http://www.softwing.com/iisdev/profiler/。
二、 有關資料庫效能的最佳化
1.用直接將資料庫綁定到OLE DB的驅動程序,而不通過ODBC。關於這一點,詳見講座六。
2.盡量使用系統預設的遊標(CursorType)和上鎖(LockType)類型,尤其要避免使用動態遊標。
3.適當使用預存程序。預存程序比查詢字串的效率高,使用起來方便得多,好處多多。
4.及時釋放資源,例如儘早的釋放對象、關閉連線等。
5.資料庫效能測試(1) 測試SQL查詢的速度,可以使用Microsoft Isql/w(Microsoft SQL Server6.5)或Microsoft Query Analyzer(Microsoft SQL Server7.0),它們可顯示執行的每個步驟及所需時間。
(2) Microsoft SQL Server7.0的Profiler,可以追蹤對資料庫伺服器上執行的查詢的監控。例如,可以追蹤記錄運行最慢的查詢或最經常導致資料庫死鎖的查詢。
三、 另外幾個問題
1.其他可選的ASP開發平台先前我們所講的ASP腳本都是在Microsoft系列平台上創建的,除此之外,你還可以選擇Chili!ASP來運行ASP,它的突出優點是在Windows NT和Unix平台上均可使用。主頁網址:http://www.chilisoft.com/。
2.關於<% @language=VBScript%>
先前我們所遇到的所有ASP腳本,開頭第一行程式碼基本上都是<% @Language = VBScript%>,這表示這一頁的ASP腳本所使用的腳本語言為VBScript,實際上,在ASP中也可以使用Jscript、PerlScript等其他腳本語言。
在ASP中,你可以設定整個Web網站使用一種腳本語言(如VbScript,這也是IIS的缺省設定),而對某一個特定頁面使用另一種腳本語言(如Jscript),甚至於對某一個頁面的某一個函數使用另一種腳本語言。下面我們舉一個實例:
(1) 如何設定整個Web網站所使用的腳本語言。
執行ISM(Internet Service Manager)→右鍵點選網站名,選擇Properties→選擇Home Directory標籤→點選Configuration按鈕→選擇Application Configuration對話方塊中的App Options標籤→在Default ASP Language文字方塊中輸入VbScript或Jscript即可。
(2) 例程wuf99.asp
<% @Language = PerlScript %>
<Html>
<Head><Title>Bye</Title></Head>
<Body>
<%
$Response->write(
sprintf( "IP address = %s",
$Request->ServerVariables(
"REMOTE_ADDR" )->item ) );
%>
<SCRIPT LANGUAGE="JScript" RUNAT="Server">
function saybye()
{
Response.Write("再見!")
}
</SCRIPT>
<SCRIPT LANGUAGE="VBScript" RUNAT="Server">
For I=1 to 3
saybye()
Next
</SCRIPT>
</Body>
</Html>
注意:你可以在ASP中自由的使用VBSript或Jscript,因為Microsoft支援這兩種(IE支援Netscape的JavaScript,並將其發展為Jscript,而NetScape卻不支援VBScript,這恐怕也是NetScape先發後至, Microsoft官司纏身的原因之一),但要使用PerlScript,必須另外安裝Perl腳本語言環境。建議使用ActivePerl,在Windows NT上安裝非常方便,下載網址:http://www.newhua.com.cn/activeperl.htm。
3.一個不錯的ASP設計實例網路上有很多ASP的實例,主要集中在留言本、聊天室、新聞發布和BBS等,這裡向大家推薦一個用ASP設計的BBS系統-Free BBS,下載地址為:http: //free_bbs.soim.net/。
到這裡,ASP系列講座就要告一段落了,但仍然還有很多問題沒有涉及,如Windows2000與IIS5.0、ASP的安全問題以及其他一些與IIS或NT有關的概念(Windows DNA、MTS、MSMQ)等等……,如果有機會,以後大家還可在這裡見面,這次,再見!