用Response.Buffer=True為程式加速,Response.Flush()內容至少要有256位元組
for i=1 至 256
yongfa365=yongfa365&<!--這裡主要是讓前邊先產生256個字符,這樣才可以即時輸出-->
if len(yongfa365)>=256 then exit for
next
MadeBasic()
MadeModel()
MadeIndexBlogItem()
response.Write 1/6所有模版生成完成<br>&yongfa365
Response.Flush()
MadeIndex(Calendar)
response.Write 2/6日期索引產生完成<br>
Response.Flush()
MadeIndex(Category)
response.Write 3/6分類索引產生完成<br>
Response.Flush()
MadeIndex(Blog)
response.Write 4/6總索引產生完成<br>
Response.Flush()
MadeRSS()
response.Write 5/6RSS生成完成<br>
Response.Flush()
MadeItem(all)
response.Write 6/6所有文章生成完成<font color=red>OK,終於完成了</red>
Response.Flush()
以上為後台動態產生靜態檔一段程式碼,目的是讓自己可以看到程式執行到哪了,以前沒加Response.Flush()就只看那IE狀態欄裡的進度條,感覺好鬱悶,加上Response .Flush()後,感覺就一個字爽,下邊是從網路上找的一些參考資料匯集:
不知道大家對Buffer了解多少,很多人對這個概念都比較模糊,尤其是在asp。很多初學者在寫asp程式時很少用到這條語句,下面我就來說說Buffer的用途以及它在asp程式中的作用。
一、Buffer
Buffer直譯英文的意思是緩衝區,這裡我們稱它為緩衝,因為它不只是個名詞,還是個動詞。
緩衝區是儲存一系列的資料的地方,客戶端所獲得的資料可以從程式的執行結果直接輸出,也可以從緩衝區輸出。但這兩種方式在速度上是有差異的:在web中,當一個asp程式被請求的次數不多時,二者基本上沒有什麼差異,至少我們感覺不出來。但是當有很多人請求一個asp程式時,速度可就不一樣了。如果沒有緩衝區,那麼每個請求asp程式的人的客戶端所得到的結果都是asp程式執行一次所得到的結果,而如果預先將asp程式緩衝,那麼每個客戶端所得到的結果就是緩衝區的結果,不是執行一次程序的結果。例如有1000個使用者同時造訪一個asp頁面,如果這個asp程式沒有緩衝,那麼程式將被執行一千次,這樣伺服器的負荷就回加大,從而導致客戶端開啟頁面速度變慢;如果這個asp程序被緩衝了,那麼結果就不一樣了,每個客戶端直接從緩衝區獲得數據,伺服器將不會因為訪問增加而增加程序執行次數,因此客戶端打開頁面的速度也就比上一種情況要快。這就是Buffer的好處。
二、如何將asp程式緩衝
這個問題其實很簡單,只要在asp程式的第一行加上:
<% Response.Buffer = True %>
就可以了。
這句話的意思就是指明輸出頁面是否被緩衝,當屬性值為True時,伺服器將不會向客戶端發送任何訊息,直到所有程式執行完或遇到
<% Response.Flush %>或<% Response.End %>
語句,才會釋放緩衝區的資訊。
利用Response.Buffer=True,Response.Flush 可以增進瀏覽速度,如果一個頁面Response.Buffer=False,有30個資料轉輸,若有100 人瀏覽此頁面,則有3000個來回傳輸,嚴重影響效率;若在起始得設定Response.Buffer=True,再將整個頁面分為幾個群組,在適當的地方搭配Response.Flush,則可大幅改善瀏覽者的體驗。
三、為什麼有時會覺得沒用
比如:
<%
'警告:沒事別運行這個
for i=1 至 10000
Response.Write <b><center><font color=#FF0000>我是www.yongfa365.com&i& 呀</font></center></b>
Response.Flush
response.Clear
next
%>
半天才會出來,而且出來的是一堆,然後才一個一個的接著出來。
原因:
Response.Flush()。他會將緩衝區中編譯完成的資料先傳送到客戶端
但是
flush的內容至少要有256位元組。也就是只有編譯產生了至少256位元組的數據,才能在執行Response.Flush()以後將訊息傳送到客戶端並顯示。
Clear 方法
Clear 方法刪除緩衝區中的所有HTML 輸出。 Clear 方法只刪除回應正文而不刪除回應標題
文法
Response.Clear
註解
呼叫Response.Clear 將清楚本頁面前面部分所輸出的數據,同時,如果程式設定了Response.ContentEncoding,Response.Clear 將同時將編碼方式設定為直接傳送。
應用於Response 對象
四、總結
Response的Buffer屬性雖然能提高頁面顯示速度,但也要分什麼狀況。如果你正在製作一個普通的個人主頁,訪問量不是很高,並且沒有什麼複雜的執行程序,那麼用不用這個屬性就不是很重要,因為將數據緩衝也需要一段時間,只不過我們感覺不到罷了;但是如果你正在製作一個大型論壇或一個產品展示或其他的商務站點,並且訪問量很高,那麼我建議在程序的第一行加入<% Response.Buffer = True %>這句話,因為這樣能夠讓客戶在有效的時間內獲得更多的數據。
附:
一般驗證碼裡文件頭裡有這個
Response.Buffer=false
Response.Expires=0
Response.ExpiresAbsolute = Now() - 1
Response.AddHeader Pragma,No-Cache
Response.AddHeader Cache-Control,Private
Response.CacheControl = No-Cache
就是為了不讓其有快取。