二十八條改善 ASP 效能和外觀的技巧(15-21)
來源:互聯網
上載者:User
技巧 15:批處理內嵌指令碼和 Response.Write 語句
技巧 16:如果頁面需要很長時間才能完成,那麼執行前使用 Response.IsClientConnected
技巧 17:使用 <OBJECT> 標記例示對象
技巧 18:對於 ADO 和其它組件使用 TypeLib 綁定
技巧 19:利用瀏覽器的驗證功能
技巧 20:避免在迴圈語句中使用字串串聯
技巧 21:啟用瀏覽器和代理緩衝
技巧 15:批處理內嵌指令碼和 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 塊內:
<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
%>
</table>
當禁用響應緩衝時,這一技巧的效果特別大。最好啟用響應緩衝,然後看批處理 Response.Write 是否有助於提高效能。
(在這一特定舉例中,建立表主體的嵌套迴圈 (While Not rs.EOF...) 可以用仔細構建的 GetString 調用來替代。)
技巧 16:如果頁面需要很長時間才能完成,那麼執行前使用 Response.IsClientConnected