
寫(xiě)程序的人在編寫(xiě)由asp頁(yè)面生成靜態(tài)頁(yè)面html的時(shí)候,如果同時(shí)生成大量頁(yè)面,一定遇到過(guò)瀏覽器下方的進(jìn)度條上顯示著(zhù)3%,6%,10%等緩慢
增長(cháng)的漫長(cháng)等待過(guò)程。在這個(gè)等待過(guò)程中,你不知道頁(yè)面已經(jīng)生成到哪一條記錄,只能大眼瞪小眼的等。
如果你知道Response.Flush和Response.Clear,那你就可以不用這樣的等待了。每生成一個(gè)Html頁(yè)面,就用Response.write立即返回一條信息
,提示該條數據庫記錄已經(jīng)生成Html。
這樣,在同時(shí)生成大量頁(yè)面的時(shí)候,你就不再是孤獨的望著(zhù)一片空白的頁(yè)面而只是瀏覽器下方緩慢變化著(zhù)的進(jìn)度條而發(fā)呆了,你可以隨時(shí)知道
當前已經(jīng)生成到哪條數據庫記錄了,即使出現意外,如死機,斷電等,你也知道下次生成應該從哪天記錄重新開(kāi)始生成html了。是不是很爽呢
,這就是一個(gè)進(jìn)度條了而且更具體了。
呵呵,別著(zhù)急,我們先來(lái)看Response.Flush和Response.Clear的意思吧。
Response對象之Flush方法,立即發(fā)送緩沖區中的輸出。如果未將 Response.Buffer 設置為 TRUE,則該方法將導致運行時(shí)錯誤。語(yǔ)法:
Response.Flush;注釋?zhuān)喝绻?ASP 頁(yè)上調用 Flush 方法,則服務(wù)器將響應該頁(yè)上保持活動(dòng)的請求。應用于Response對象。
關(guān)于Buffer,這里有段介紹。Buffer從英文直譯過(guò)來(lái)的意思是“緩沖區”,這里我們將它稱(chēng)為緩沖,因為它不僅是個(gè)名詞,還是個(gè)動(dòng)詞。
緩沖區是存儲一系列的數據的地方,客戶(hù)端所獲得的數據可以從程序的執行結果直接輸出,也可以從緩沖區輸出。但是這兩種方式在速度上是
有差異的:在web中,當一個(gè)asp程序被請求的次數不多時(shí),二者基本上沒(méi)有什么差異,至少我們感覺(jué)不出來(lái)。但是當有很多人請求一個(gè)asp程序
時(shí),速度可就不一樣了。如果沒(méi)有緩沖區,那么每個(gè)請求asp程序的人的客戶(hù)端所得到的結果都是asp程序執行一次所得到的結果,而如果預先
將asp程序緩沖,那么每個(gè)客戶(hù)端所得到的結果就是緩沖區的結果,不是執行一次程序的結果。比如有1000個(gè)用戶(hù)同時(shí)訪(fǎng)問(wèn)一個(gè)asp頁(yè)面,如果
這個(gè)asp程序沒(méi)有緩沖,那么程序將被執行一千次,這樣服務(wù)器的負荷就回加大,從而導致客戶(hù)端打開(kāi)頁(yè)面速度變慢;如果這個(gè)asp程序被緩沖
了,那么結果就不一樣了,每個(gè)客戶(hù)端直接從緩沖區獲得數據,服務(wù)器將不會(huì )因為訪(fǎng)問(wèn)增加而增加程序執行次數,因此客戶(hù)端打開(kāi)頁(yè)面的速度
也就比上一種情況要快。這就是Buffer的好處。
關(guān)于Response.clear,Clear 方法刪除緩沖區中的所有 HTML 輸出。但 Clear 方法只刪除響應正文而不刪除響應標題??梢杂迷摲椒ㄌ幚礤e誤
情況。請注意,如果未將 Response.Buffer 設置為 TRUE,則該方法將導致運行時(shí)錯誤。語(yǔ)法:Response.Clear;應用于Response對象。
好了,想實(shí)現立即輸出的效果,只要在循環(huán)體內的希望輸出提示信息后加上Response.Flush和Response.Clear就可以了。如:
<%
for i=1 to 2000
for i1=1 to 3000
''空循環(huán),延長(cháng)每次執行時(shí)間
next
Response.write i&")"
Response.Flush
Response.Clear
next
%>
上述asp語(yǔ)句,你執行后,會(huì )發(fā)現輸出是逐個(gè)逐個(gè)輸出的,執行一次,就輸出一次。
但我在網(wǎng)上看到有人說(shuō),“很多時(shí)候,我們發(fā)現即使我們使用了Response.Flush(),但是并沒(méi)有將前面的信息發(fā)到客戶(hù)端來(lái)顯示。呈獻給我們
的依然是白屏。經(jīng)過(guò)反復的測試,我得出一個(gè)結論:就是flush的內容至少要有256字節。也就是只有編譯產(chǎn)生了至少256字節的數據,才能在執
行Response.Flush()以后將信息發(fā)到客戶(hù)端并顯示?!?/P>
很奇怪,上述我給出的語(yǔ)句確確實(shí)實(shí)是實(shí)現了逐個(gè)顯示的效果的,并沒(méi)有事先輸出256個(gè)字節,大家可以把上述語(yǔ)句另存為記事本運行看看,效
果是逐行顯示的。本人所列觀(guān)點(diǎn),僅代表flymorn個(gè)人觀(guān)點(diǎn),不挪作他用。
如果你確實(shí)需要事先輸出256個(gè)字節,可以如下:
<%
dim liji
for i=1 to 256
liji=liji&"<!--先產(chǎn)生256個(gè)字符-WWW.PIAOYI.ORG-->"
if len(liji)>=256 then exit for
next
%>
呢 稱(chēng): | |
表 情: | |
內 容: |
評論內容:不能超過(guò) 1000 字,需審核,請自覺(jué)遵守互聯(lián)網(wǎng)相關(guān)政策法規。 |
驗證碼: | |
您發(fā)布的評論即表示同意遵守以下條款:
一、不得利用本站危害國家安全、泄露國家秘密,不得侵犯國家、社會(huì )、集體和公民的合法權益;
二、不得發(fā)布國家法律、法規明令禁止的內容;互相尊重,對自己在本站的言論和行為負責;
三、本站對您所發(fā)布內容擁有處置權。