asp Response.flush 實(shí)時(shí)顯示進(jìn)度
更新時(shí)間:2008年08月04日 00:46:49 作者:
如果你知道Response.Flush和Response.Clear,那你就可以不用這樣的等待了。每生成一個(gè)Html頁(yè)面,就用Response.write立即返回一條信息,提示該條數(shù)據(jù)庫(kù)記錄已經(jīng)生成Html。
寫(xiě)程序的人在編寫(xiě)由asp頁(yè)面生成靜態(tài)頁(yè)面html的時(shí)候,如果同時(shí)生成大量頁(yè)面,一定遇到過(guò)瀏覽器下方的進(jìn)度條上顯示著3%,6%,10%等緩慢增長(zhǎng)的漫長(zhǎng)等待過(guò)程。在這個(gè)等待過(guò)程中,你不知道頁(yè)面已經(jīng)生成到哪一條記錄,只能大眼瞪小眼的等。
如果你知道Response.Flush和Response.Clear,那你就可以不用這樣的等待了。每生成一個(gè)Html頁(yè)面,就用Response.write立即返回一條信息,提示該條數(shù)據(jù)庫(kù)記錄已經(jīng)生成Html。
這樣,在同時(shí)生成大量頁(yè)面的時(shí)候,你就不再是孤獨(dú)的望著一片空白的頁(yè)面而只是瀏覽器下方緩慢變化著的進(jìn)度條而發(fā)呆了,你可以隨時(shí)知道當(dāng)前已經(jīng)生成到哪條數(shù)據(jù)庫(kù)記錄了,即使出現(xiàn)意外,如死機(jī),斷電等,你也知道下次生成應(yīng)該從哪天記錄重新開(kāi)始生成html了。是不是很爽呢,這就是一個(gè)進(jìn)度條了而且更具體了。
呵呵,別著急,我們先來(lái)看Response.Flush和Response.Clear的意思吧。
Response對(duì)象之Flush方法,立即發(fā)送緩沖區(qū)中的輸出。如果未將 Response.Buffer 設(shè)置為 TRUE,則該方法將導(dǎo)致運(yùn)行時(shí)錯(cuò)誤。語(yǔ)法:Response.Flush;注釋?zhuān)喝绻?nbsp;ASP 頁(yè)上調(diào)用 Flush 方法,則服務(wù)器將響應(yīng)該頁(yè)上保持活動(dòng)的請(qǐng)求。應(yīng)用于Response對(duì)象。
關(guān)于Buffer,這里有段介紹。Buffer從英文直譯過(guò)來(lái)的意思是“緩沖區(qū)”,這里我們將它稱(chēng)為緩沖,因?yàn)樗粌H是個(gè)名詞,還是個(gè)動(dòng)詞。
緩沖區(qū)是存儲(chǔ)一系列的數(shù)據(jù)的地方,客戶(hù)端所獲得的數(shù)據(jù)可以從程序的執(zhí)行結(jié)果直接輸出,也可以從緩沖區(qū)輸出。但是這兩種方式在速度上是有差異的:在web中,當(dāng)一個(gè)asp程序被請(qǐng)求的次數(shù)不多時(shí),二者基本上沒(méi)有什么差異,至少我們感覺(jué)不出來(lái)。但是當(dāng)有很多人請(qǐng)求一個(gè)asp程序時(shí),速度可就不一樣了。如果沒(méi)有緩沖區(qū),那么每個(gè)請(qǐng)求asp程序的人的客戶(hù)端所得到的結(jié)果都是asp程序執(zhí)行一次所得到的結(jié)果,而如果預(yù)先將asp程序緩沖,那么每個(gè)客戶(hù)端所得到的結(jié)果就是緩沖區(qū)的結(jié)果,不是執(zhí)行一次程序的結(jié)果。比如有1000個(gè)用戶(hù)同時(shí)訪(fǎng)問(wèn)一個(gè)asp頁(yè)面,如果這個(gè)asp程序沒(méi)有緩沖,那么程序?qū)⒈粓?zhí)行一千次,這樣服務(wù)器的負(fù)荷就回加大,從而導(dǎo)致客戶(hù)端打開(kāi)頁(yè)面速度變慢;如果這個(gè)asp程序被緩沖了,那么結(jié)果就不一樣了,每個(gè)客戶(hù)端直接從緩沖區(qū)獲得數(shù)據(jù),服務(wù)器將不會(huì)因?yàn)樵L(fǎng)問(wèn)增加而增加程序執(zhí)行次數(shù),因此客戶(hù)端打開(kāi)頁(yè)面的速度也就比上一種情況要快。這就是Buffer的好處。
關(guān)于Response.clear,Clear 方法刪除緩沖區(qū)中的所有 HTML 輸出。但 Clear 方法只刪除響應(yīng)正文而不刪除響應(yīng)標(biāo)題??梢杂迷摲椒ㄌ幚礤e(cuò)誤情況。請(qǐng)注意,如果未將 Response.Buffer 設(shè)置為 TRUE,則該方法將導(dǎo)致運(yùn)行時(shí)錯(cuò)誤。語(yǔ)法:Response.Clear;應(yīng)用于Response對(duì)象。
好了,想實(shí)現(xiàn)立即輸出的效果,只要在循環(huán)體內(nèi)的希望輸出提示信息后加上Response.Flush和Response.Clear就可以了。如:
<%
for i=1 to 2000
for i1=1 to 3000
''空循環(huán),延長(zhǎng)每次執(zhí)行時(shí)間
next
Response.write i&")"
Response.Flush
Response.Clear
next
%>
上述asp語(yǔ)句,你執(zhí)行后,會(huì)發(fā)現(xiàn)輸出是逐個(gè)逐個(gè)輸出的,執(zhí)行一次,就輸出一次。
但我在網(wǎng)上看到有人說(shuō),“很多時(shí)候,我們發(fā)現(xiàn)即使我們使用了Response.Flush(),但是并沒(méi)有將前面的信息發(fā)到客戶(hù)端來(lái)顯示。呈獻(xiàn)給我們的依然是白屏。經(jīng)過(guò)反復(fù)的測(cè)試,我得出一個(gè)結(jié)論:就是flush的內(nèi)容至少要有256字節(jié)。也就是只有編譯產(chǎn)生了至少256字節(jié)的數(shù)據(jù),才能在執(zhí)行Response.Flush()以后將信息發(fā)到客戶(hù)端并顯示?!?
很奇怪,上述我給出的語(yǔ)句確確實(shí)實(shí)是實(shí)現(xiàn)了逐個(gè)顯示的效果的,并沒(méi)有事先輸出256個(gè)字節(jié),大家可以把上述語(yǔ)句另存為記事本運(yùn)行看看,效果是逐行顯示的。本人所列觀點(diǎn),僅代表flymorn個(gè)人觀點(diǎn),不挪作他用。
如果你確實(shí)需要事先輸出256個(gè)字節(jié),可以如下:
<%
dim liji
for i=1 to 256
liji=liji&"<!--先產(chǎn)生256個(gè)字符-WWW.PIAOYI.ORG-->"
if len(liji)>=256 then exit for
next
%>
如果你有不同的看法,或有不同的試驗(yàn)結(jié)果,歡迎與我一起討論。
如果你知道Response.Flush和Response.Clear,那你就可以不用這樣的等待了。每生成一個(gè)Html頁(yè)面,就用Response.write立即返回一條信息,提示該條數(shù)據(jù)庫(kù)記錄已經(jīng)生成Html。
這樣,在同時(shí)生成大量頁(yè)面的時(shí)候,你就不再是孤獨(dú)的望著一片空白的頁(yè)面而只是瀏覽器下方緩慢變化著的進(jìn)度條而發(fā)呆了,你可以隨時(shí)知道當(dāng)前已經(jīng)生成到哪條數(shù)據(jù)庫(kù)記錄了,即使出現(xiàn)意外,如死機(jī),斷電等,你也知道下次生成應(yīng)該從哪天記錄重新開(kāi)始生成html了。是不是很爽呢,這就是一個(gè)進(jìn)度條了而且更具體了。
呵呵,別著急,我們先來(lái)看Response.Flush和Response.Clear的意思吧。
Response對(duì)象之Flush方法,立即發(fā)送緩沖區(qū)中的輸出。如果未將 Response.Buffer 設(shè)置為 TRUE,則該方法將導(dǎo)致運(yùn)行時(shí)錯(cuò)誤。語(yǔ)法:Response.Flush;注釋?zhuān)喝绻?nbsp;ASP 頁(yè)上調(diào)用 Flush 方法,則服務(wù)器將響應(yīng)該頁(yè)上保持活動(dòng)的請(qǐng)求。應(yīng)用于Response對(duì)象。
關(guān)于Buffer,這里有段介紹。Buffer從英文直譯過(guò)來(lái)的意思是“緩沖區(qū)”,這里我們將它稱(chēng)為緩沖,因?yàn)樗粌H是個(gè)名詞,還是個(gè)動(dòng)詞。
緩沖區(qū)是存儲(chǔ)一系列的數(shù)據(jù)的地方,客戶(hù)端所獲得的數(shù)據(jù)可以從程序的執(zhí)行結(jié)果直接輸出,也可以從緩沖區(qū)輸出。但是這兩種方式在速度上是有差異的:在web中,當(dāng)一個(gè)asp程序被請(qǐng)求的次數(shù)不多時(shí),二者基本上沒(méi)有什么差異,至少我們感覺(jué)不出來(lái)。但是當(dāng)有很多人請(qǐng)求一個(gè)asp程序時(shí),速度可就不一樣了。如果沒(méi)有緩沖區(qū),那么每個(gè)請(qǐng)求asp程序的人的客戶(hù)端所得到的結(jié)果都是asp程序執(zhí)行一次所得到的結(jié)果,而如果預(yù)先將asp程序緩沖,那么每個(gè)客戶(hù)端所得到的結(jié)果就是緩沖區(qū)的結(jié)果,不是執(zhí)行一次程序的結(jié)果。比如有1000個(gè)用戶(hù)同時(shí)訪(fǎng)問(wèn)一個(gè)asp頁(yè)面,如果這個(gè)asp程序沒(méi)有緩沖,那么程序?qū)⒈粓?zhí)行一千次,這樣服務(wù)器的負(fù)荷就回加大,從而導(dǎo)致客戶(hù)端打開(kāi)頁(yè)面速度變慢;如果這個(gè)asp程序被緩沖了,那么結(jié)果就不一樣了,每個(gè)客戶(hù)端直接從緩沖區(qū)獲得數(shù)據(jù),服務(wù)器將不會(huì)因?yàn)樵L(fǎng)問(wèn)增加而增加程序執(zhí)行次數(shù),因此客戶(hù)端打開(kāi)頁(yè)面的速度也就比上一種情況要快。這就是Buffer的好處。
關(guān)于Response.clear,Clear 方法刪除緩沖區(qū)中的所有 HTML 輸出。但 Clear 方法只刪除響應(yīng)正文而不刪除響應(yīng)標(biāo)題??梢杂迷摲椒ㄌ幚礤e(cuò)誤情況。請(qǐng)注意,如果未將 Response.Buffer 設(shè)置為 TRUE,則該方法將導(dǎo)致運(yùn)行時(shí)錯(cuò)誤。語(yǔ)法:Response.Clear;應(yīng)用于Response對(duì)象。
好了,想實(shí)現(xiàn)立即輸出的效果,只要在循環(huán)體內(nèi)的希望輸出提示信息后加上Response.Flush和Response.Clear就可以了。如:
<%
for i=1 to 2000
for i1=1 to 3000
''空循環(huán),延長(zhǎng)每次執(zhí)行時(shí)間
next
Response.write i&")"
Response.Flush
Response.Clear
next
%>
上述asp語(yǔ)句,你執(zhí)行后,會(huì)發(fā)現(xiàn)輸出是逐個(gè)逐個(gè)輸出的,執(zhí)行一次,就輸出一次。
但我在網(wǎng)上看到有人說(shuō),“很多時(shí)候,我們發(fā)現(xiàn)即使我們使用了Response.Flush(),但是并沒(méi)有將前面的信息發(fā)到客戶(hù)端來(lái)顯示。呈獻(xiàn)給我們的依然是白屏。經(jīng)過(guò)反復(fù)的測(cè)試,我得出一個(gè)結(jié)論:就是flush的內(nèi)容至少要有256字節(jié)。也就是只有編譯產(chǎn)生了至少256字節(jié)的數(shù)據(jù),才能在執(zhí)行Response.Flush()以后將信息發(fā)到客戶(hù)端并顯示?!?
很奇怪,上述我給出的語(yǔ)句確確實(shí)實(shí)是實(shí)現(xiàn)了逐個(gè)顯示的效果的,并沒(méi)有事先輸出256個(gè)字節(jié),大家可以把上述語(yǔ)句另存為記事本運(yùn)行看看,效果是逐行顯示的。本人所列觀點(diǎn),僅代表flymorn個(gè)人觀點(diǎn),不挪作他用。
如果你確實(shí)需要事先輸出256個(gè)字節(jié),可以如下:
<%
dim liji
for i=1 to 256
liji=liji&"<!--先產(chǎn)生256個(gè)字符-WWW.PIAOYI.ORG-->"
if len(liji)>=256 then exit for
next
%>
如果你有不同的看法,或有不同的試驗(yàn)結(jié)果,歡迎與我一起討論。
相關(guān)文章
asp隨機(jī)數(shù) 隨機(jī)產(chǎn)生N位由數(shù)字和字母組成的密碼
隨機(jī)產(chǎn)生N位由數(shù)字和字母組成的密碼 asp隨機(jī)數(shù)2010-04-04
asp 刪除數(shù)據(jù)并同時(shí)刪除圖片的代碼
實(shí)現(xiàn)刪除記錄同時(shí)刪除圖片,一般的情況為了性能都是用編輯器的同時(shí)將文章中的圖片,保存在一個(gè)字段里面,多個(gè)圖片用逗號(hào)分開(kāi),方便后期的刪除處理。2010-05-05
ASP開(kāi)發(fā)中數(shù)據(jù)庫(kù)文件調(diào)用的捷徑
本文針對(duì)ASP程序設(shè)計(jì)中最基礎(chǔ)、也是最關(guān)鍵的部分"數(shù)據(jù)庫(kù)文件的調(diào)用"進(jìn)行說(shuō)明,同時(shí)談?wù)凙SP程序設(shè)計(jì)中數(shù)據(jù)庫(kù)文件調(diào)用的一些技巧2006-09-09
asp與js的類(lèi)型轉(zhuǎn)換函數(shù)介紹
這篇文章主要介紹asp與js的類(lèi)型轉(zhuǎn)換函數(shù),需要的朋友可以參考下2013-03-03
ASP中實(shí)現(xiàn)分頁(yè)顯示的七種方法
這篇文章主要介紹了ASP中實(shí)現(xiàn)分頁(yè)顯示的七種方法,這七種方法可以分為四大類(lèi),需要的朋友可以參考下2015-09-09
ASP讀取XML實(shí)例 優(yōu)酷專(zhuān)輯采集程序 雷鋒版
用asp獲取指定專(zhuān)題的xml文件,然后讀取xml文件的列表內(nèi)容批量讀取。2009-12-12

