韩剧1988免费观看全集_久久影视三级福利片_亚洲视频在线观看免费_在线观看欧美日韩_国产亚洲激情在线_亚洲精品美女久久久_欧美国产日韩一区二区在线观看_91在线观看免费高清完整版在线观看_日韩av免费看_国产又爽又黄的激情精品视频_琪琪亚洲精品午夜在线_欧美性猛xxx_不卡毛片在线看_国产亚洲日本欧美韩国_91国内在线视频_精品国产福利视频

當(dāng)前位置:蘿卜系統(tǒng)下載站 > 技術(shù)開發(fā)教程 > 詳細頁面

用PHP控制您的瀏覽器cache

用PHP控制您的瀏覽器cache

更新時間:2022-10-19 文章作者:未知 信息來源:網(wǎng)絡(luò) 閱讀次數(shù):

Output Control 函數(shù)可以讓你自由控制腳本中數(shù)據(jù)的輸出。它非常地有用,特別是對于:當(dāng)你想在數(shù)據(jù)已經(jīng)輸出后,再輸出文件頭的情況。輸出控制函數(shù)不對使用 header() 或 setcookie(), 發(fā)送的文件頭信息產(chǎn)生影響,只對那些類似于 echo() 和 PHP 代碼的數(shù)據(jù)塊有作用。

我們先舉一個簡單的例子,讓大家對Output Control有一個大致的印象:
Example 1.
<?php
ob_start(); //打開緩沖區(qū)
echo "Hellon"; //輸出
header(“l(fā)ocation:index.php”); //把瀏覽器重定向到index.php
ob_end_flush();//輸出全部內(nèi)容到瀏覽器
?>
所有對header()函數(shù)有了解的人都知道,這個函數(shù)會發(fā)送一段文件頭給瀏覽器,但是如果在使用這個函數(shù)之前已經(jīng)有了任何輸出(包括空輸出,比如空格,回車和換行)就會提示出錯。如果我們?nèi)サ舻谝恍械膐b_start(),再執(zhí)行此程序,我們會發(fā)現(xiàn)得到了一條錯誤提示:“Header had all ready send by”!但是加上ob_start,就不會提示出錯,原因是當(dāng)打開了緩沖區(qū),echo后面的字符不會輸出到瀏覽器,而是保留在服務(wù)器,直到你使用flush或者ob_end_flush才會輸出,所以并不會有任何文件頭輸出的錯誤!


一、 相關(guān)函數(shù)簡介:
1、Flush:刷新緩沖區(qū)的內(nèi)容,輸出。
函數(shù)格式:flush()
說明:這個函數(shù)經(jīng)常使用,效率很高。
2、ob_start :打開輸出緩沖區(qū)
函數(shù)格式:void ob_start(void)
說明:當(dāng)緩沖區(qū)激活時,所有來自PHP程序的非文件頭信息均不會發(fā)送,而是保存在內(nèi)部緩沖區(qū)。為了輸出緩沖區(qū)的內(nèi)容,可以使用ob_end_flush()或flush()輸出緩沖區(qū)的內(nèi)容。
3 、ob_get_contents :返回內(nèi)部緩沖區(qū)的內(nèi)容。
使用方法:string ob_get_contents(void)
說明:這個函數(shù)會返回當(dāng)前緩沖區(qū)中的內(nèi)容,如果輸出緩沖區(qū)沒有激活,則返回 FALSE 。
4、ob_get_length:返回內(nèi)部緩沖區(qū)的長度。
使用方法:int ob_get_length(void)
說明:這個函數(shù)會返回當(dāng)前緩沖區(qū)中的長度;和ob_get_contents一樣,如果輸出緩沖區(qū)沒有激活。則返回 FALSE。
5、ob_end_flush :發(fā)送內(nèi)部緩沖區(qū)的內(nèi)容到瀏覽器,并且關(guān)閉輸出緩沖區(qū)。
使用方法:void ob_end_flush(void)
說明:這個函數(shù)發(fā)送輸出緩沖區(qū)的內(nèi)容(如果有的話)。
6、ob_end_clean:刪除內(nèi)部緩沖區(qū)的內(nèi)容,并且關(guān)閉內(nèi)部緩沖區(qū)
使用方法:void ob_end_clean(void)
說明:這個函數(shù)不會輸出內(nèi)部緩沖區(qū)的內(nèi)容而是把它刪除!
7、ob_implicit_flush:打開或關(guān)閉絕對刷新
使用方法:void ob_implicit_flush ([int flag])
說明:使用過Perl的人都知道$|=x的意義,這個字符串可以打開/關(guān)閉緩沖區(qū),而ob_implicit_flush函數(shù)也和那個一樣,默認為關(guān)閉緩沖區(qū),打開絕對輸出后,每個腳本輸出都直接發(fā)送到瀏覽器,不再需要調(diào)用 flush()


二、深入了解:

1. 關(guān)于Flush函數(shù):
這個函數(shù)在PHP3中就出現(xiàn)了,是一個效率很高的函數(shù),他有一個非常有用的功能就是刷新browser的cache.我們舉一個運行效果非常明顯的例子來說明flush.
Example 2.
<?php
for($i = 1; $i <= 300; $i++ ) print(“ “);
// 這一句話非常關(guān)鍵,cache的結(jié)構(gòu)使得它的內(nèi)容只有達到一定的大小才能從瀏覽器里輸出
// 換言之,如果cache的內(nèi)容不達到一定的大小,它是不會在程序執(zhí)行完畢前輸出的。經(jīng)
// 過測試,我發(fā)現(xiàn)這個大小的底限是256個字符長。這意味著cache以后接收的內(nèi)容都會
// 源源不斷的被發(fā)送出去。
For($j = 1; $j <= 20; $j++) {
echo $j.”
”;
flush(); //這一部會使cache新增的內(nèi)容被擠出去,顯示到瀏覽器上
sleep(1); //讓程序“睡”一秒鐘,會讓你把效果看得更清楚
}
?>

具體效果你可以到這里看看http://www.php2000.com/~uchinaboy/out.php
PHP2000的最新的PHP聊天室就是用的這個技術(shù),可惜的是源代碼未公開 L
注:如果在程序的首部加入ob_implicit_flush()打開絕對刷新,就可以在程序中不再使用flush(),這樣做的好處是:提高效率!

2. 關(guān)于ob系列函數(shù):
我想先引用我的好朋友y10k的一個例子:
Example 3.
比如你用得到服務(wù)器和客戶端的設(shè)置信息,但是這個信息會因為客戶端的不同而不同,如果想要保存phpinfo()函數(shù)的輸出怎么辦呢?在沒有緩沖區(qū)控制之前,可以說一點辦法也沒有,但是有了緩沖區(qū)的控制,我們可以輕松的解決:
<?php
ob_start(); //打開緩沖區(qū)
phpinfo(); //使用phpinfo函數(shù)
$info=ob_get_contents(); //得到緩沖區(qū)的內(nèi)容并且賦值給$info
$file=fopen('info.txt','w'); //打開文件info.txt
fwrite($file,$info); //寫入信息到info.txt
fclose($file); //關(guān)閉文件info.txt
?>

用以上的方法,就可以把不同用戶的phpinfo信息保存下來,這在以前恐怕沒有辦法辦到!其實上面就是將一些“過程”轉(zhuǎn)化為“函數(shù)”的方法!
或許有人會問:“難道就這個樣子嗎?還有沒有其他用途?”當(dāng)然有了,比如筆者論壇的PHP 語法加亮顯示就和這個有關(guān)(PHP默認的語法加亮顯示函數(shù)會直接輸出,不能保存結(jié)果,如果在每次調(diào)用都顯示恐怕會很浪費CPU,筆者的論壇就把語法加亮函數(shù)顯示的結(jié)果用控制緩沖區(qū)的方法保留了),大家如果感興趣的話可以來看看http://www.zphp.com/bbs/!

可能現(xiàn)在大家對ob_start()的功能有了一定的了解,上面的一個例子看似簡單,但實際上已經(jīng)掌握了使用ob_start()的要點。
<1>.使用ob_start打開browser的cache,這樣可以保證cache的內(nèi)容在你調(diào)用flush(),ob_end_flush()(或程序執(zhí)行完畢)之前不會被輸出。
<2>.現(xiàn)在的你應(yīng)該知道你所擁有的優(yōu)勢:可以在任何輸出內(nèi)容后面使用header,setcookie以及session,這是ob_start一個很大的特點;也可以使用ob_start的參數(shù),在cache被寫入后,然后自動運行命令,比如ob_start("ob_gzhandler");而我們最常用的做法是用ob_get_contents()得到cache中的內(nèi)容,然后再進行處理……
<3>.當(dāng)處理完畢后,我們可以使用各種方法輸出,flush(),ob_end_flush(),以及等到程序執(zhí)行完畢后的自動輸出。當(dāng)然,如果你用的是ob_get_contents(),那么就要你自己控制輸出方式了。

來,讓我們看看能用ob系列函數(shù)做些什么……

一、 靜態(tài)模版技術(shù)

簡介:所謂靜態(tài)模版技術(shù)就是通過某種方式,使得用戶在client端得到的是由PHP產(chǎn)生的html頁面。如果這個html頁面不會再被更新,那么當(dāng)另外的用戶再次瀏覽此頁面時,程序?qū)⒉粫僬{(diào)用PHP以及相關(guān)的數(shù)據(jù)庫,對于某些信息量比較大的網(wǎng)站,例如sina,163,sohu。類似這種的技術(shù)帶來的好處是非常巨大的。

我所知道的實現(xiàn)靜態(tài)輸出的有兩種辦法:
<1>.通過y10k修改的phplib的一個叫template.inc.php類實現(xiàn)。
<2>.使用ob系列函數(shù)實現(xiàn)。
對于第一種方法,因為不是這篇文章所要研究的問題,所以不再贅述。
我們現(xiàn)在來看一看第二種方法的具體實現(xiàn):
Example 4.

<?php
ob_start();//打開緩沖區(qū)
?>
php頁面的全部輸出
<?
$content = ob_get_contents();//取得php頁面輸出的全部內(nèi)容
$fp = fopen(“output00001.html”, “w”); //創(chuàng)建一個文件,并打開,準備寫入
fwrite($fp, $content); //把php頁面的內(nèi)容全部寫入output00001.html,然后……
fclose($fp);
?>
這樣,所謂的靜態(tài)模版就很容易的被實現(xiàn)了……

二、 捕捉輸出

以上的Example 4.是一種最簡單的情況,你還可以在寫入前對$content進行操作……
你可以設(shè)法捕捉一些關(guān)鍵字,然后去對它進行再處理,比如Example 3.所述的PHP語法高亮顯示。個人認為,這個功能是此函數(shù)最大的精華所在,它可以解決各種各樣的問題,但需要你有足夠的想象力……
Example 5.
<?
Function run_code($code) {
If($code) {
ob_start();
eval($code);
$contents = ob_get_contents();
ob_end_clean();
}else {
echo “錯誤!沒有輸出”;
exit();
}
return $contents;
}

以上這個例子的用途不是很大,不過很典型$code的本身就是一個含有變量的輸出頁面,而這個例子用eval把$code中的變量替換,然后對輸出結(jié)果再進行輸出捕捉,再一次的進行處理……

Example 6. 加快傳輸

<?
/*
** Title.........: PHP4 HTTP Compression Speeds up the Web
** Version.......: 1.20
** Author........: catoc <catoc@163.net>
** Filename......: gzdoc.php
** Last changed..: 18/10/2000
** Requirments...: PHP4 >= 4.0.1
** PHP was configured with --with-zlib[=DIR]
** Notes.........: Dynamic Content Acceleration compresses
** the data transmission data on the fly
** code by sun jin hu (catoc) <catoc@163.net>
** Most newer browsers since 1998/1999 have
** been equipped to support the HTTP 1.1
** standard known as "content-encoding."
** Essentially the browser indicates to the
** server that it can accept "content encoding"
** and if the server is capable it will then
** compress the data and transmit it. The
** browser decompresses it and then renders
** the page.
**
** Modified by John Lim (jlim@natsoft.com.my)
** based on ideas by Sandy McArthur, Jr
** Usage........:
** No space before the beginning of the first '<?' tag.
** ------------Start of file----------
** |<?
** | include('gzdoc.php');
** |? >
** |<HTML>
** |... the page ...
** |</HTML>
** |<?
** | gzdocout();
** |? >
** -------------End of file-----------
*/
ob_start();
ob_implicit_flush(0);
function CheckCanGzip(){
global $HTTP_ACCEPT_ENCODING;
if (headers_sent() || connection_timeout() || connection_aborted()){
return 0;
}
if (strpos($HTTP_ACCEPT_ENCODING, 'x-gzip') !== false) return "x-gzip";
if (strpos($HTTP_ACCEPT_ENCODING,'gzip') !== false) return "gzip";
return 0;
}
/* $level = compression level 0-9, 0=none, 9=max */
function GzDocOut($level=1,$debug=0){
$ENCODING = CheckCanGzip();
if ($ENCODING){
print "n<!-- Use compress $ENCODING -->n";
$Contents = ob_get_contents();
ob_end_clean();
if ($debug){
$s = "<p>Not compress length: ".strlen($Contents);
$s .= "
Compressed length: ".strlen(gzcompress($Contents,$level));
$Contents .= $s;
}
header("Content-Encoding: $ENCODING");
print "x1fx8bx08x00x00x00x00x00";
$Size = strlen($Contents);
$Crc = crc32($Contents);
$Contents = gzcompress($Contents,$level);
$Contents = substr($Contents, 0, strlen($Contents) - 4);
print $Contents;
print pack('V',$Crc);
print pack('V',$Size);
exit;
}else{
ob_end_flush();
exit;
}
}
?>
這是catoc的一段很早以前的代碼,是在weblogs.com看到的,他利用了zlib的函數(shù),對傳輸?shù)膬?nèi)容進行了壓縮,測試表明,對于10k以上的頁面,會產(chǎn)生效果,而且頁面越大,效果越明顯……

溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統(tǒng)下載排行

網(wǎng)站地圖xml | 網(wǎng)站地圖html
久久亚洲综合色| 国产精品久久久免费观看| 欧美一区三区四区| 中文精品一区二区三区| 国产日韩换脸av一区在线观看| 精品这里只有精品| 日韩最新中文字幕电影免费看| 91av免费| 亚洲国产精品专区久久| 欧美女子与性| 欧美有码在线观看| 欧美一级一区二区| 欧美一区二区免费观在线| 欧美多人乱p欧美4p久久| 国产中文精品久高清在线不| 亚洲欧洲另类| 三区精品视频观看| 超碰国产精品久久国产精品99| 日本韩国在线视频| 国产日韩视频在线观看| 日本一区二区三区在线视频| 国产精品原创巨作av| 国产免费拔擦拔擦8x在线播放| 人人干视频在线| gogo亚洲高清大胆美女人体| 无码日韩精品一区二区免费| 精品久久久久一区| 欧美激情亚洲激情| 久久久久99精品国产片| 欲求不满的岳中文字幕| 91精品国产综合久久久久久久久久| 亚洲色图一区二区三区| 天干天干啦夜天干天2019| 不卡av电影院| 成人免费毛片高清视频| 国产一区二区0| 精品人妻二区中文字幕| 一级做a爰片性色毛片视频| 日本少妇色视频| 欧美日韩亚洲一区三区| 国产在线播放一区三区四| 国产91色在线| 天堂av中文在线资源库| 日韩a级作爱片一二三区免费观看| 国产av无码专区亚洲av毛网站| 久久久久久欧美| 国产精品一区二区人妻喷水| 精品久久国产精品| 日韩精品乱码久久久久久| 最近2019年中文视频免费在线观看| 怡春院在线视频| 国产成人亚洲综合青青| 在线成人av网站| 免费成人蒂法| 色视频网站在线观看| 天堂网一区二区三区| 久久免费视频网站| 韩国v欧美v日本v亚洲| 日韩有码一区二区三区| 亚洲综合中文字幕68页| 国产激情无套内精对白视频| 久久久国产免费| 国产成人av影院| 欧美精品1区2区3区| 欧美一级淫片aaaaaa| 99国产牛牛视频在线网站| 日本少妇一区| 蜜桃在线视频| 黑人巨大精品一区二区在线| 久久久亚洲成人| 亚洲人成欧美中文字幕| 色综合色综合| 日韩不卡视频在线| 亚洲va国产日韩欧美精品色婷婷| 日韩精品小视频| 日本在线观看天堂男亚洲| 一区二区视频免费完整版观看| 波多野结衣一区二区三区在线观看| 在线成人av影院| 国产伦理精品| 国产二区三区四区| 国产日韩一级片| 91丨九色丨国产在线| 在线免费看av的网站| 国产欧美精品日韩精品| 国产伦精品一区二区三区四区| 欧美日韩综合视频| 最新国产成人av网站网址麻豆| 欧美aⅴ99久久黑人专区| 欧美日韩在线视频免费| 国产精品人人爽人人做我的可爱| 2025中文字幕| 天堂av在线8| 国内精品自线一区二区三区视频| 国产精品久久77777| 欧美日韩精品一区二区在线播放| 色狠狠av一区二区三区香蕉蜜桃| 中文字幕在线播放一区| 亚洲国产精品悠悠久久琪琪| 四虎视频在线精品免费网址| 亚洲国产成人在人网站天堂| 中文字幕中文字幕在线中心一区| 激情成人综合网| 国产最新视频在线| 欧美一区二区三区成人精品| 久草在线国产| 中文无码av一区二区三区| 久久久免费看片| 欧美色网站导航| 四虎久久影院| 一区二区国产盗摄色噜噜| 天海翼视频在线观看| 欧美在线视频免费播放| 国产视频视频一区| a天堂中文在线88| 色偷偷亚洲女人天堂观看欧| 日韩黄色免费观看| 另类少妇人与禽zozz0性伦| 久久久久久欧美| 国产精品中文久久久久久| 成人做爰69片免费看网站| 91成人在线观看喷潮教学| 欧美精品videosex牲欧美| av永久不卡| 国产亚洲成av人片在线观看| 美女视频网站黄色亚洲| 精品国产髙清在线看国产毛片| 中文字幕日韩精品久久| 尤物一区二区三区| 欧美日韩成人在线观看| 色窝窝无码一区二区三区| 红杏一区二区三区| 欧美aaaaaaaa| 狠狠躁少妇一区二区三区| 一区二区视频| 亚洲精品97久久| 美女国产一区| 91精品国产综合久久精品性色| 成人av动漫在线| 日韩欧美在线视频| 1313精品午夜理伦电影| 不许穿内裤随时挨c调教h苏绵| 日韩精品免费综合视频在线播放| 日本视频一二三区中文字幕| 精品裸体bbb| 一区二区在线不卡| 精品资源在线看| 欧美成人激情图片网| 日本10禁啪啪无遮挡免费一区二区| 亚洲a区在线视频| 日本天堂在线观看| 天天av天天翘天天综合网| 激情视频在线观看免费| 激情视频免费在线| 亚洲爱爱爱爱爱| 中文字幕av手机在线| 欧美男女交配视频| 国产人妻精品一区二区三| 久久国产柳州莫菁门| 国产精品白丝jk黑袜喷水| 国产一区高清视频| 无码人妻丰满熟妇区毛片蜜桃精品| 日韩极品一区| 日本韩国欧美中文字幕| wwwxxxx在线观看| youjizz.com国产| 99国产精品国产精品毛片| 精品人在线二区三区| 亚洲线精品一区二区三区八戒| 91福利区在线观看| 国产成人综合亚洲欧美在| 97超碰在线人人| 欧美另类精品xxxx孕妇| 欧美久久久久久久久久久久久| 精品久久久久久久久久久国产字幕| 国产欧美精品一区二区色综合朱莉| 亚洲精品免费在线观看视频| 欧美××××黑人××性爽| 欧美日韩在线视频一区二区三区| 18涩涩午夜精品.www| 宅男噜噜噜66国产免费观看| 香蕉人妻av久久久久天天| 亚洲h片在线看| 久久国产精品久久| 国产黄在线免费观看| 8888在线观看免费www| 美女在线观看视频一区二区| 欧美日韩国产精品一卡| 波多野结衣中文字幕在线| www.久久色.com| 爽爽影院免费观看视频| 欧美xxxx做受欧美.88| 日韩av综合| 久久夜精品香蕉| 在线播放中文字幕一区| 国产午夜精品久久久久久免费视| 久久久久久久久久久久久女国产乱| 日韩中文字幕视频| 精品国产亚洲日本| 日韩电影在线观看一区| 亚洲电影在线播放| 极品白浆推特女神在线观看| 国产区在线观看成人精品| 草久久免费视频| 激情视频极品美女日韩| 在线成人激情视频| 成人免费观看在线网址| 色猫咪免费人成网站在线观看| 欧美成人激情视频| 国产精品网红福利| 午夜精品影视国产一区在线麻豆| 欧美久久精品一级黑人c片| 粉嫩一区二区三区在线观看| 日本中文字幕在线观看视频| 欧美两根一起进3p做受视频| 国产成人精品免费视频网站| 看全色黄大色大片免费久久久| 国产传媒视频在线| 91精品国产91久久久久久密臀| 美女福利一区二区| 麻豆国产精品va在线观看不卡| 亚洲国产女人aaa毛片在线| 日韩高清免费观看| 欧美一区二区三区免费在线看| 久久免费看av| av色图一区| av天堂一区二区三区| 伊人色综合久久久| 24小时免费看片在线观看| 国产一区二区三区在线看| 少妇太紧太爽又黄又硬又爽| 亚洲影院理伦片| 一级片免费看| 欧美在线视频全部完| 色哟哟无码精品一区二区三区| 小泽玛利亚视频在线观看| 精品少妇久久久久久888优播| 日本三级在线播放完整版| 91久久久免费一区二区| 亚洲综合色激情五月| 欧美性感美女h网站在线观看免费| 8x8x8国产精品| 阳光姐妹淘韩国版| 不卡毛片在线看| 亚洲天堂第一页| 亚洲国产一区二区三区在线播放| 成人系列视频| 国产喷白浆一区二区三区| 亚洲综合第一页| 亚洲国产日韩综合一区| 国产精品国产亚洲伊人久久| 国产精欧美一区二区三区白种人| 国产亚洲欧美在线视频| 国产又粗又大又长| 国产精品夜夜夜爽张柏芝| 91精品一区二区三区久久久久久| 精品中文字幕在线| 国产精品精华液网站| 亚洲视频在线免费播放| 成人高清免费观看mv| 欧美国产极品| 一区二区毛片| 无码一区二区三区| 欧美成人免费全部网站| 在线观看你懂的网站| av福利在线导航| 亚洲a一区二区| 日韩欧美国产综合在线一区二区三区| 国产精品狼人久久影院观看方式| 亚洲成人av观看| 人人做人人澡人人爽欧美| 一级片在线免费看| 国产伦理片在线观看| 亚洲人在线观看视频| 久久99久国产精品黄毛片色诱| 特黄三级视频| 精品二区视频| 日韩精品一区国产麻豆| www.xxx亚洲| 日韩欧美一区在线观看| 中日韩精品一区二区三区| 成人午夜剧场免费观看完整版| 亚洲一区网址| 国产ts人妖一区二区三区| 女女色综合影院| 亚洲春色h网| 欧美日韩三级在线观看| www.国产成人| 久久国产夜色精品鲁鲁99| 国内av免费观看| 欧美被日视频| 波多野结衣一二三区| 麻豆最新免费在线视频| 欧洲激情视频| 日韩欧美网站| 久久亚洲影音av资源网| 特黄特黄一级片| 3d精品h动漫啪啪一区二区| 国内精品第一页| 日本精品一区在线观看| 综合分类小说区另类春色亚洲小说欧美| 91在线观看污| 热re99久久精品国产99热| 日韩精品免费一线在线观看| 午夜成人鲁丝片午夜精品| 欧美一区二区三区久久综| 国产精品77777| 五月婷婷丁香花| 午夜精产品一区二区在线观看的| 日韩成人高清| 亚洲国产中文在线二区三区免| 高清在线成人网| av毛片在线免费观看| 亚洲mmav| 久久草视频在线| 动漫精品一区二区三区| 亚洲一区网站| 91av免费看| 日韩欧美一卡二卡| 9国产精品午夜| 国产一区二区三区四区hd| 欧美一区二区三区日韩视频| 天天揉久久久久亚洲精品| 色婷婷精品大在线视频| 成人片黄网站色大片免费毛片| 国内在线精品| 亚洲一级二级三级在线免费观看| 亚洲欧美日韩成人|