asp下Response.Buffer提速
更新時間:2008年06月25日 13:37:25 作者:
用Response.Buffer=True為程序加速,Response.Flush()內(nèi)容至少要有256字節(jié)
for i=1 to 256
yongfa365=yongfa365&"<!--這里主要是讓前邊先產(chǎn)生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()
以上為后臺動態(tài)生成靜態(tài)文件一段代碼,目的是讓自己可以看到程序執(zhí)行到哪了,以前沒加Response.Flush()就只看那IE狀態(tài)欄里的進度條,感覺好郁悶,加上Response.Flush()后,感覺就一個字“爽”,下邊是從網(wǎng)上找的一些參考資料匯集:
不知道大家對Buffer了解多少,很多人對這個概念都比較模糊,尤其是在asp中。很多初學者在編寫asp程序時很少用到這條語句,下面我就來說說Buffer的用途以及它在asp程序中的作用。
一、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的好處。
二、如何將asp程序緩沖
這個問題其實很簡單,只要在asp程序的第一行加上:
<% Response.Buffer = True %>
就可以了。
這句話的意思就是指明輸出頁面是否被緩沖,當屬性值為True時,服務器將不會向客戶端發(fā)送任何信息,直到所有程序執(zhí)行完或者遇到
<% Response.Flush %>或<% Response.End %>
語句,才會釋放緩沖區(qū)的信息。
利用 Response.Buffer=True,Response.Flush 可以增進瀏覽速度,如果一個頁面 Response.Buffer=False,有30個資料轉輸,若有 100 人瀏覽此頁面,則有 3000 個來回傳輸,嚴重影響效率;若在起始得設定 Response.Buffer=True,再將整個頁面分為幾個群組,在適當?shù)牡胤酱钆?nbsp;Response.Flush,則可大幅改善瀏覽者的體驗。
三、為什么有時會感覺沒有用
比如:
<%
'警告:沒事別運行這個
for i=1 to 10000
Response.Write "<b><center><font color=""#FF0000"">我是www.yongfa365.com"&i& "呀</font></center></b>"
Response.Flush
response.Clear
next
%>
半天才會出來,而且出來的是一堆,然后才一個一個的接著出來。
原因:
Response.Flush()。他會將緩沖區(qū)中編譯完成的數(shù)據(jù)先發(fā)送到客戶端
但是
flush的內(nèi)容至少要有256字節(jié)。也就是只有編譯產(chǎn)生了至少256字節(jié)的數(shù)據(jù),才能在執(zhí)行Response.Flush()以后將信息發(fā)到客戶端并顯示。
Clear 方法
Clear 方法刪除緩沖區(qū)中的所有 HTML 輸出。Clear 方法只刪除響應正文而不刪除響應標題
語法
Response.Clear
注釋
調用 Response.Clear 將清楚本頁面前面部分所輸出的數(shù)據(jù),同時,如果程序設定了 Response.ContentEncoding,Response.Clear 將同時將編碼方式設定為直接傳送。
應用于Response 對象
四、總結
Response的Buffer屬性雖然能夠提高頁面顯示速度,但是也要分什么情況。如果你正在制作一個普通的個人主頁,訪問量不是很高,并且沒有什么復雜的執(zhí)行程序,那么用不用這個屬性就不是很重要,因為將數(shù)據(jù)緩沖也需要一段時間,只不過我們感覺不到罷了;但是如果你正在制作一個大型論壇或者一個產(chǎn)品展示或其他的商務站點,并且訪問量很高,那么我建議在程序的第一行加入<% Response.Buffer = True %>這句話,因為這樣能夠讓客戶在有效的時間內(nèi)獲得更多的數(shù)據(jù)。
附:
一般驗證碼里文件頭里有這個
Response.Buffer=false
Response.Expires=0
Response.ExpiresAbsolute = Now() - 1
Response.AddHeader "Pragma","No-Cache"
Response.AddHeader "Cache-Control","Private"
Response.CacheControl = "No-Cache"
就是為了不讓其有緩存。
您可能感興趣的文章:
- ASP.NET筆記之 Request 、Response 與Server的使用
- ASP.NET之Response.Cookies.Remove 無法刪除COOKIE的原因
- asp.net直接Response輸出WML頁面示例代碼
- asp.net中WebResponse 跨域訪問實例代碼
- Asp.net response對象與request對象使用介紹
- Asp.net中Response.Charset與Response.ContentEncoding區(qū)別示例分析
- asp中Response.End()用法
- 小論asp中request與response的用法
- PHP模擬asp中response類實現(xiàn)方法
- ASP基礎入門第七篇(ASP內(nèi)建對象Response)
相關文章
rs.open sql,conn,1,1與rs.open sql,conn,1.3還有rs.open sql,conn,
Rs.Open語法如下:rs.Open Source,ActiveConnection,CursorType,LockType Source為sql語句,ActiveConnection為數(shù)據(jù)庫連接,CursorType是游標,LockType是數(shù)據(jù)鎖定類型.2011-01-01asp 讀取 utf-8格式文檔并生成utf-8格式文檔的亂碼問題
asp 讀取 utf-8格式文檔并生成utf-8格式文檔的亂碼問題...2007-07-07