自己也遇到過這種情況:數據庫中才2w條記錄,使用通常的那種html與asp混用的方法來顯示,打開頁面的時候,要等待很長的時間才能看到效果,然後點擊下一頁的時候,也需要很長的時間。請教過一些高手,才知道問題出在html與asp混用上,這種使用方法對數據量少,沒有太大的影響。數據量多,就會浪費時間了。
RESPONSE.WRITE與<%=%>都是ASP程序向客戶端輸出字符串的方法,雖然兩者的結果相同但是其效果是不同的。
一般的來說我們大部分時間將<%=%>用於html與asp代碼相混合的狀態下,而Response.Write用於〈%……%〉腳本段中,但從VBScript語法<%=expression %>將“表達式”的值寫入ASP輸出流來分析這個方法可以發現。如果響應緩衝沒有打開,則這些語句的每一句都會導致通過網絡,以許多小型包的形式,向瀏覽器寫入數據。這是非常慢的。另外,解釋少量腳本和HTML,將導致在腳本引擎和HTML之間切換,也降低了性能。因此,對於Response.Write的一個調用,替換內嵌的密集組合表達式在應用程序的性能上可以得到很大的提高.
我們通常使用以下語句顯示數據庫內容:
<%dowhilenotrs.eof%>
<%=rs("flides")%>
<%rs.movenext%>
<%loop%>
將不如
<%str=""
fori=1tors.recodecount
str=str+rs("flides")
rs.movenext
next
Response.Write(str)
%>
執行速度快。另外,我們使用
fori=1tors.recodecount
替換掉
dowhilenotrs.eof
也有一個顯然的好處。用指定次數的循環,可以避免每次都檢測是否到達循環的最後。
如此也可以提高效率。