3 回答

TA貢獻(xiàn)1852條經(jīng)驗(yàn) 獲得超1個(gè)贊
ob_start();
....
ob_clean();
這兩句中間的任意輸出,都可以用ob_get_contents();來(lái)獲取而不輸出到瀏覽器.
經(jīng)典應(yīng)用:將phpinfo()的信息寫(xiě)到文件里.
ob_start();
phpinfo();
$phpinfo = ob_get_contents();
//文件讀寫(xiě)操作
ob_clean();
其實(shí)ob是output buffering的簡(jiǎn)稱,而不是output cache,ob用對(duì)了,是能對(duì)速度有一定的幫助,但是盲目的加上ob函數(shù),只會(huì)增加CPU額外的負(fù)擔(dān)。下面我說(shuō)說(shuō)ob的基本作用。
1.防止在瀏覽器有輸出之后再使用setcookie,或者h(yuǎn)eader,session_start函數(shù)造成的錯(cuò)誤。(我本以為最開(kāi)始說(shuō)的代碼是這樣的作用,但后來(lái)朋友說(shuō)不是的),其實(shí)這樣的用法少用為好,養(yǎng)成良好的代碼習(xí)慣。
2.捕捉對(duì)一些不可獲取的函數(shù)的輸出,比如phpinfo會(huì)輸出一大堆的HTML,但是我們無(wú)法用一個(gè)變量例如$info=phpinfo();來(lái)捕捉,這時(shí)候ob就管用了
3.對(duì)輸出的內(nèi)容進(jìn)行處理,例如進(jìn)行g(shù)zip壓縮,例如進(jìn)行簡(jiǎn)繁轉(zhuǎn)換,例如進(jìn)行一些字符串替換。
4.生成靜態(tài)文件,其實(shí)就是捕捉整頁(yè)的輸出,然后存成文件,經(jīng)常在生成HTML,或者整頁(yè)緩存中使用。
對(duì)于剛才說(shuō)的第三點(diǎn)中的GZIP壓縮,可能是很多人想用,卻沒(méi)有真真用上的,其實(shí)稍稍修改下我朋友的代碼,就可以實(shí)現(xiàn)頁(yè)面的gzip壓縮。
- 3 回答
- 0 關(guān)注
- 782 瀏覽
添加回答
舉報(bào)