佳木斯湛栽影视文化发展公司

主頁 > 知識庫 > asp Response.flush 實時顯示進度

asp Response.flush 實時顯示進度

熱門標簽:服務器配置 Linux服務器 電子圍欄 科大訊飛語音識別系統(tǒng) 團購網(wǎng)站 阿里云 Mysql連接數(shù)設置 銀行業(yè)務
寫程序的人在編寫由asp頁面生成靜態(tài)頁面html的時候,如果同時生成大量頁面,一定遇到過瀏覽器下方的進度條上顯示著3%,6%,10%等緩慢增長的漫長等待過程。在這個等待過程中,你不知道頁面已經(jīng)生成到哪一條記錄,只能大眼瞪小眼的等。

    如果你知道Response.Flush和Response.Clear,那你就可以不用這樣的等待了。每生成一個Html頁面,就用Response.write立即返回一條信息,提示該條數(shù)據(jù)庫記錄已經(jīng)生成Html。

    這樣,在同時生成大量頁面的時候,你就不再是孤獨的望著一片空白的頁面而只是瀏覽器下方緩慢變化著的進度條而發(fā)呆了,你可以隨時知道當前已經(jīng)生成到哪條數(shù)據(jù)庫記錄了,即使出現(xiàn)意外,如死機,斷電等,你也知道下次生成應該從哪天記錄重新開始生成html了。是不是很爽呢,這就是一個進度條了而且更具體了。

    呵呵,別著急,我們先來看Response.Flush和Response.Clear的意思吧。

    Response對象之Flush方法,立即發(fā)送緩沖區(qū)中的輸出。如果未將 Response.Buffer 設置為 TRUE,則該方法將導致運行時錯誤。語法:Response.Flush;注釋:如果在 ASP 頁上調用 Flush 方法,則服務器將響應該頁上保持活動的請求。應用于Response對象。

    關于Buffer,這里有段介紹。Buffer從英文直譯過來的意思是“緩沖區(qū)”,這里我們將它稱為緩沖,因為它不僅是個名詞,還是個動詞。

  緩沖區(qū)是存儲一系列的數(shù)據(jù)的地方,客戶端所獲得的數(shù)據(jù)可以從程序的執(zhí)行結果直接輸出,也可以從緩沖區(qū)輸出。但是這兩種方式在速度上是有差異的:在web中,當一個asp程序被請求的次數(shù)不多時,二者基本上沒有什么差異,至少我們感覺不出來。但是當有很多人請求一個asp程序時,速度可就不一樣了。如果沒有緩沖區(qū),那么每個請求asp程序的人的客戶端所得到的結果都是asp程序執(zhí)行一次所得到的結果,而如果預先將asp程序緩沖,那么每個客戶端所得到的結果就是緩沖區(qū)的結果,不是執(zhí)行一次程序的結果。比如有1000個用戶同時訪問一個asp頁面,如果這個asp程序沒有緩沖,那么程序將被執(zhí)行一千次,這樣服務器的負荷就回加大,從而導致客戶端打開頁面速度變慢;如果這個asp程序被緩沖了,那么結果就不一樣了,每個客戶端直接從緩沖區(qū)獲得數(shù)據(jù),服務器將不會因為訪問增加而增加程序執(zhí)行次數(shù),因此客戶端打開頁面的速度也就比上一種情況要快。這就是Buffer的好處。

   關于Response.clear,Clear 方法刪除緩沖區(qū)中的所有 HTML 輸出。但 Clear 方法只刪除響應正文而不刪除響應標題??梢杂迷摲椒ㄌ幚礤e誤情況。請注意,如果未將 Response.Buffer 設置為 TRUE,則該方法將導致運行時錯誤。語法:Response.Clear;應用于Response對象。

   好了,想實現(xiàn)立即輸出的效果,只要在循環(huán)體內的希望輸出提示信息后加上Response.Flush和Response.Clear就可以了。如:

%
for i=1 to 2000
for i1=1 to 3000
''空循環(huán),延長每次執(zhí)行時間
next
Response.write i")"
Response.Flush
Response.Clear
next
%>

    上述asp語句,你執(zhí)行后,會發(fā)現(xiàn)輸出是逐個逐個輸出的,執(zhí)行一次,就輸出一次。

    但我在網(wǎng)上看到有人說,“很多時候,我們發(fā)現(xiàn)即使我們使用了Response.Flush(),但是并沒有將前面的信息發(fā)到客戶端來顯示。呈獻給我們的依然是白屏。經(jīng)過反復的測試,我得出一個結論:就是flush的內容至少要有256字節(jié)。也就是只有編譯產(chǎn)生了至少256字節(jié)的數(shù)據(jù),才能在執(zhí)行Response.Flush()以后將信息發(fā)到客戶端并顯示。”

    很奇怪,上述我給出的語句確確實實是實現(xiàn)了逐個顯示的效果的,并沒有事先輸出256個字節(jié),大家可以把上述語句另存為記事本運行看看,效果是逐行顯示的。本人所列觀點,僅代表flymorn個人觀點,不挪作他用。

    如果你確實需要事先輸出256個字節(jié),可以如下:

%
dim liji
for i=1 to 256
liji=liji"!--先產(chǎn)生256個字符-WWW.PIAOYI.ORG-->"
if len(liji)>=256 then exit for
next
%>
   如果你有不同的看法,或有不同的試驗結果,歡迎與我一起討論。
您可能感興趣的文章:
  • Response.Flush的使用心得
  • 通過Response.Flush()實現(xiàn)下載失敗的解決方法

標簽:衢州 廣元 江蘇 蚌埠 萍鄉(xiāng) 棗莊 衡水 大理

巨人網(wǎng)絡通訊聲明:本文標題《asp Response.flush 實時顯示進度》,本文關鍵詞  ;如發(fā)現(xiàn)本文內容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內容系統(tǒng)采集于網(wǎng)絡,涉及言論、版權與本站無關。
  • 相關文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266
    宜君县| 乌拉特前旗| 浮梁县| 开封市| 岳普湖县| 佳木斯市| 南丰县| 康平县| 嫩江县| 南安市| 永寿县| 浙江省| 桦川县| 宣恩县| 布尔津县| 临安市| 池州市| 蓝田县| 喀喇沁旗| 镇江市| 武穴市| 商城县| 日照市| 神农架林区| 精河县| 高清| 闽清县| 漳浦县| 广东省| 聊城市| 小金县| 襄樊市| 独山县| 芜湖市| 江华| 治多县| 保德县| 方山县| 远安县| 闽侯县| 临朐县|