Response 對(duì)象的Buffer 屬性是用來(lái)確定是否輸出緩沖頁(yè),也就是控制何時(shí)將輸出信息送至請(qǐng)求瀏覽器。Buffer 的取值可以是"true" 或 "False" ,若取True 表示使用緩沖頁(yè),若Web 服務(wù)器輸出使用緩沖頁(yè),則只有當(dāng)前頁(yè)的所有服務(wù)器腳本處理完畢或是調(diào)用了Flush 或 End 方法,才將數(shù)據(jù)傳送至客戶端,若取False 表示不使用緩沖頁(yè),數(shù)據(jù)在當(dāng)前頁(yè)的所有服務(wù)器腳本處理的同時(shí)傳送至客戶端。
其語(yǔ)法格式如下:
Responser.Ruffer= True | False
注解:
服務(wù)器將輸出發(fā)送給客戶端瀏覽器后就不能再設(shè)置 Buffer 屬性。因此應(yīng)該在 .asp 文件設(shè)置Buffer 屬性的語(yǔ)句應(yīng)放在<% @ language %>命令后面的第一行。
如果當(dāng)前 ASP 腳本緩沖設(shè)為 True 但未調(diào)用 Flush 方法,則服務(wù)器將使客戶端的請(qǐng)求保持活動(dòng),不必為每一個(gè)客戶端創(chuàng)建新的連接,從而節(jié)省了時(shí)間。
如果在HTML 或腳本輸出之后更改 Buffer 屬性值,則會(huì)出錯(cuò)誤。
一、Buffer的用途
Buffer從英文直譯過(guò)來(lái)的意思是“緩沖區(qū)”,這里我們將它稱為緩沖,因?yàn)樗粌H是個(gè)名詞,還是個(gè)動(dòng)詞。
緩沖區(qū)是存儲(chǔ)一系列的數(shù)據(jù)的地方,客戶端所獲得的數(shù)據(jù)可以從程序的執(zhí)行結(jié)果直接輸出,也可以從緩沖區(qū)輸出。但是這兩種方式在速度上是有差異的:在web中,當(dāng)一個(gè)asp程序被請(qǐng)求的次數(shù)不多時(shí),二者基本上沒有什么差異,至少我們感覺不出來(lái)。但是當(dāng)有很多人請(qǐng)求一個(gè)asp程序時(shí),速度可就不一樣了。如果沒有緩沖區(qū),那么每個(gè)請(qǐng)求asp程序的人的客戶端所得到的結(jié)果都是asp程序執(zhí)行一次所得到的結(jié)果,而如果預(yù)先將asp程序緩沖,那么每個(gè)客戶端所得到的結(jié)果就是緩沖區(qū)的結(jié)果,不是執(zhí)行一次程序的結(jié)果。比如有1000個(gè)用戶同時(shí)訪問一個(gè)asp頁(yè)面,如果這個(gè)asp程序沒有緩沖,那么程序?qū)⒈粓?zhí)行一千次,這樣服務(wù)器的負(fù)荷就回加大,從而導(dǎo)致客戶端打開頁(yè)面速度變慢;如果這個(gè)asp程序被緩沖了,那么結(jié)果就不一樣了,每個(gè)客戶端直接從緩沖區(qū)獲得數(shù)據(jù),服務(wù)器將不會(huì)因?yàn)樵L問增加而增加程序執(zhí)行次數(shù),因此客戶端打開頁(yè)面的速度也就比上一種情況要快。這就是Buffer的好處。
二、如何將asp程序緩沖
這個(gè)問題其實(shí)很簡(jiǎn)單,只要在asp程序的第一行加上:
<% Response.Buffer = True %>
就可以了。
這句話的意思就是指明輸出頁(yè)面是否被緩沖,當(dāng)屬性值為True時(shí),服務(wù)器將不會(huì)向客戶端發(fā)送任何信息,直到所有程序執(zhí)行完或者遇到
<% Response.Flush %>或<% Response.End %>
語(yǔ)句,才會(huì)釋放緩沖區(qū)的信息。
利用 Response.Buffer=True,Response.Flush 可以增進(jìn)瀏覽速度,如果一個(gè)頁(yè)面 Response.Buffer=False,有30個(gè)資料轉(zhuǎn)輸,若有 100 人瀏覽此頁(yè)面,則有 3000 個(gè)來(lái)回傳輸,嚴(yán)重影響效率;若在起始得設(shè)定 Response.Buffer=True,再將整個(gè)頁(yè)面分為幾個(gè)群組,在適當(dāng)?shù)牡胤酱钆?Response.Flush,則可大幅改善瀏覽者的體驗(yàn)。
三、總結(jié)
Response的Buffer屬性雖然能夠提高頁(yè)面顯示速度,但是也要分什么情況。如果你正在制作一個(gè)普通的個(gè)人主頁(yè),訪問量不是很高,并且沒有什么復(fù)雜的執(zhí)行程序,那么用不用這個(gè)屬性就不是很重要,因?yàn)閷?shù)據(jù)緩沖也需要一段時(shí)間,只不過(guò)我們感覺不到罷了;但是如果你正在制作一個(gè)大型論壇或者一個(gè)產(chǎn)品展示或其他的商務(wù)站點(diǎn),并且訪問量很高,那么我建議在程序的第一行加入<% Response.Buffer = True %>這句話,因?yàn)檫@樣能夠讓客戶在有效的時(shí)間內(nèi)獲得更多的數(shù)據(jù)。
附:
一般驗(yàn)證碼里文件頭里有這個(gè)
Response.Buffer=false
Response.Expires=0
Response.ExpiresAbsolute = Now() - 1
Response.AddHeader "Pragma","No-Cache"
Response.AddHeader "Cache-Control","Private"
Response.CacheControl = "No-Cache"
就是為了不讓其有緩存。
默認(rèn)情況下,Buffer屬性值為False。當(dāng)設(shè)為True時(shí),即表示緩沖頁(yè)輸出。
例如:
<% Response.Buffer=True%>
<%
for i=1 to 2000
response.write "第" & i & "行文字<br>"
next
%>
注:運(yùn)行結(jié)果,顯示2000行文字,不過(guò)因?yàn)橛蠷esponse.Buffer=True這一句,所以先將2000行字符串緩沖,最后再一起響應(yīng)給客戶端。
該文章在 2011/3/17 10:42:41 編輯過(guò)