3 回答

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