台灣最大程式設計社群網站
線上人數
1058
 
會員總數:245394
討論主題:189183
歡迎您免費加入會員
討論區列表 >> 專欄文章 >> 改善ASP效能的訣竅-15 (Nancy Cluts 著)
[]  
[我要回覆]
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
改善ASP效能的訣竅-15 (Nancy Cluts 著)
價值 : 0 QP  點閱數:2006 回應數:0

樓主

站務人員 站長
門外漢
0 1580
542 9
發送站內信

捐贈 VP 給 站務人員
訣竅 15:批次處理內嵌 Script 和 Response.Write 陳述式

VBScript 語法 <% = expression %> 將「expression」的值寫到 ASP 輸出資料流中。
如果未啟動回應緩衝,那麼每個陳述式都會通過網路以許多小的封包將資料寫到瀏覽器中。
這樣速度很慢。而且,分散少量的 script 和 HTML 會引起 script 引擎和 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 的呼叫來取代。)
本篇文章發表於2000-09-09 00:00
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
目前尚無任何回覆
   

回覆
如要回應,請先登入.