最佳化ASP應用程式技巧四則

來源:互聯網
上載者:User
程式|技巧|最佳化|技巧|最佳化 本文將向大家介紹四則最佳化ASP應用程式的技巧。

1.將經常使用的資料緩衝在 Application 或 Session 對象中
  ASP的Application和Session對象為將資料暫存在記憶體中提供了方便的容器。你可以將資料指派到 Application和Session對象中,這些資料在HTTP調用之前保留在記憶體中。Session資料是按每個使用者分別儲存的,而Application資料則在所有使用者之間共用。

  什麼時候將資料裝載到 Application 或 Session 中呢?通常,資料是在啟動 Application 或 Session 時裝載。要在Application或Session啟動過程中裝載資料,應將適當的代碼分別添加到Application_OnStart()或Session_OnStart()中。這些函數應該在 Global.asa 中,如果沒有,我們可手工添加進這些函數。還可以在第一次需要時裝載該資料。為此,在 ASP 頁中添加一些代碼(或編寫一個可重複使用的指令碼函數),以檢查資料是否存在,如果不存在,就裝載資料。這是一個傳統提高效能的技術,稱為“惰性計算”,即在你知道需要某一個值以前不計算該值。程式舉例如下:

<%
Function GetEmploymentStatusList
Dim d
d = Application(?EmploymentStatusList?)
If d = ?? Then
' FetchEmploymentStatusList function (not shown)
' fetches data from DB, returns an Array
d = FetchEmploymentStatusList()
Application(?EmploymentStatusList?) = d
End If
GetEmploymentStatusList = d
End Function
%>


  我們可以為所需要的每個資料區塊編寫類似的函數。

2.將代碼封裝在 COM 物件中
  如果你的Web應用程式中有許多 VBScript 或JScript代碼,你可以經常將代碼移到編譯的 COM 物件中,從而可改善效能。將代碼封裝在 COM 物件中還有一些除提高效能之外的其他優點:

  (1)COM 物件有利於將表示邏輯與商務邏輯分開;

  (2)COM 物件可以保證代碼重複使用;

  (3)用VB、VC++ 或 Visual J++ 編寫的代碼比 ASP 更容易調試。

  COM對象也有缺點,包括初始化時間長和需要不同的程式設計技巧。值得注意的是,在少量ASP代碼被封裝進 COM 物件時,可能不會使效能有所改進,反而會引起效能下降。這種情況通常是建立和調用 COM 物件的系統開銷超過了編譯代碼的系統開銷。因此,我們需要反覆地實驗,以確定什麼樣的 ASP 指令碼和 COM 物件代碼的組合可以產生最好的效能。

3.處理內嵌指令碼和Response.Write語句
  VBScript 文法的<% = expression %>是將“expression”的值寫到ASP輸出資料流中。如果響應緩衝未啟用,那麼執行其中的每一條語句都會以許多小的資料包通過網路將資料寫到瀏覽器中。這樣,執行速度很慢,而且穿插執行少量的指令碼和 HTML,將會引起指令碼引擎和 HTML 之間的切換,從而極大地降低了效能。因此,我們可以使用下面的技巧,即使用 Response.Write 調用代替捆綁緊密的內嵌運算式。

  例如,在下面的樣本中,在每一行的每一欄位對響應流有一次寫操作,每一行在 VBScript 和 HTML 之間有多次切換:

<table>
<% For Each fld in rs.Fields %>
<th><% = fld.Name %></th>
<%
Next
While Not rs.EOF
%>
<tr>
<% For Each
fld in rs.Fields %>
<td><% = fld.Value %></td>
<% Next
</tr>
<% rs.MoveNext Wend %>
</table>


  為了使上面的代碼運行效率更高,我們可以利用下面的代碼,代碼的每一行對響應流有一次寫操作,所有的代碼都包含在一個VBScript程式內:

<%
Response.Write(?<table>?)
For each fld in rs.Fields
Response.Write (?<th>? && fld.Name && ?</th>? && vbCrLf)
Next
While Not rs.EOF
Response.Write (?<tr>?)
For Each fld in rs.Fields %>
Response.Write(?<td>? && fld.Value && ?</td>? && vbCrLf)
Next
Response.Write(?</tr>?)
Wend
Response.Write(?</table>?)
%>

  當禁用響應緩衝時,這一技巧的效果特別明顯。最好啟用響應緩衝,然後看批處理 Response.Write 是否有助於提高效能。

4.避免重新確定數組的維數
  在應用數組時,我們應盡量避免使用Redim數組。就效能而言,如果電腦的實體記憶體大小有限,最好將數組的初始維數設定為其最不利的情況,或者將維數設定為其最佳的情況,然後再按需要重新確定維數。

  在開發ASP的Web應用程式過程中,充分利用以上技巧會使你的Web程式具有較高的執行效能。



相關文章

Beyond APAC's No.1 Cloud

19.6% IaaS Market Share in Asia Pacific - Gartner IT Service report, 2018

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。