在當(dāng)前 PHP 版本的默認(rèn)配置下,“輸出緩沖(Output Buffering)”是被打開的。舊版本則不是這樣,在舊版本的 PHP 中,字符串在每次被輸出的時候(通過 echo 或 print 函數(shù)),都會觸發(fā)一次發(fā)送到客戶端瀏覽器的動作。
“輸出緩沖”的引入,使得這一過程更加快速、更加高效。緩沖區(qū)實(shí)際上是在內(nèi)存中開辟了一塊區(qū)域,可以認(rèn)為是內(nèi)存中的一個大的字符串。當(dāng)程序中有字符要輸出的時候,會把要輸出的內(nèi)容附加到該緩沖區(qū)中,用來替代舊版本 PHP 中每次都直接輸出到瀏覽器的方式。當(dāng)緩沖區(qū)被“刷新”的時候,再統(tǒng)一輸入到用戶瀏覽器。以下幾種情況下,會引起緩沖區(qū)的“刷新”操作:
1、PHP 程序執(zhí)行完畢;
2、緩存區(qū)的大小超過了 php.ini 配置文件中設(shè)置的 output_buffering 值;
3、flush() 或者 ob_flush() 函數(shù)被調(diào)用的時候。
在實(shí)際的產(chǎn)品環(huán)境下,我們可以通過在 head 標(biāo)簽后馬上刷新 PHP 的緩沖區(qū),來達(dá)到加速你的站點(diǎn)的目的,示例代碼如下:
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8" />
- <title>Buffer flushing in action</title>
- <link rel="stylesheet" type="text/css" href="styles.css" />
- <link rel="shortcut icon" href="favicon.ico" />
- </head>
- <?php
- // 這里強(qiáng)制刷新緩沖區(qū)
- flush();
- ?>
- <body>
- ...
新聞熱點(diǎn)
疑難解答