(1)Flush的内容至少要有256位元組
很多時候我們寫的asp程式會因為做很多操作,是以會花上一分鐘甚至幾分鐘時間。為了使軟體使用者能夠耐心的等待程式的執行,我們經常會希望有一個進度條來表示程式執行的狀态。或者最起碼要顯示一個類似: “資料載入中”,“正在儲存資料” 等的說明性文字。此時我們就會用到Response.flush()。他會将緩沖區中編譯完成的資料先發送到用戶端。
但是有很多時候,我們發現即使我們使用了Response.Flush(),但是并沒有将前面的資訊發到用戶端來顯示。呈獻給我們的依然是白屏。經過反複的測試,我得出一個結論(僅代表個人觀點,可随意引用,但後果自負)。就是flush的内容至少要有256位元組。也就是隻有編譯産生了至少256位元組的資料,才能在執行Response.Flush()以後将資訊發到用戶端并顯示。
<html>
<body>
<%
Call TestFlush ''Flush測試
%>
</body>
</html>
''=================================================
Sub DoSomeThing ''模拟一個背景操作
For i=1 To 10000000
None = i
Next
End Sub
Function LongSpaceStr() ''制造一個長空字元串
LongSpaceStr = ""
For i=1 To 256
LongSpaceStr = LongSpaceStr& " "
End Function
Sub TestFlush ''Flush測試
'用LongSpaceStr加長輸出内容,以使Flush生效
Response.Write(LongSpaceStr&"正在執行操作,請等待..."&Now())
Response.Flush()
Call DoSomeThing
Response.Write("<br>操作成功完成!"&Now())
Response.Flush()
(2)Response.Flush()調用之前不能出現未閉合的HTML标簽(<html> ,<body>除外)
比如,以下代碼經測試是不行的:
<table ID="MyTable"><tr><td>
</td></tr></table>
''......略去與上例中同樣的代碼......
以下代碼經測試是可行的:
<table ID="MyTable"><tr><td></td></tr></table>
以下代碼經測試也是可行的:
--------沒有在ASP.NET下做類似測試,道理應該是一樣。---------