刷新PHP緩沖區(qū)為你的站點加速
在當前 PHP 版本的默認配置下,“輸出緩沖(Output Buffering)”是被打開的。舊版本則不是這樣,在舊版本的 PHP 中,字符串在每次被輸出的時候(通過 echo 或 print 函數(shù)),都會觸發(fā)一次發(fā)送到客戶端瀏覽器的動作。
“輸出緩沖”的引入,使得這一過程更加快速、更加高效。緩沖區(qū)實際上是在內(nèi)存中開辟了一塊區(qū)域,可以認為是內(nèi)存中的一個大的字符串。當程序中有字符要輸出的時候,會把要輸出的內(nèi)容附加到該緩沖區(qū)中,用來替代舊版本 PHP 中每次都直接輸出到瀏覽器的方式。當緩沖區(qū)被“刷新”的時候,再統(tǒng)一輸入到用戶瀏覽器。以下幾種情況下,會引起緩沖區(qū)的“刷新”操作:
1、PHP 程序執(zhí)行完畢;
2、緩存區(qū)的大小超過了 php.ini 配置文件中設(shè)置的 output_buffering 值;
3、flush() 或者 ob_flush() 函數(shù)被調(diào)用的時候。
在實際的產(chǎn)品環(huán)境下,我們可以通過在 head 標簽后馬上刷新 PHP 的緩沖區(qū),來達到加速你的站點的目的,示例代碼如下:
<!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 // 這里強制刷新緩沖區(qū) flush(); ?> <body> ...
接下來來解釋上述代碼的作用:
當瀏覽器接收到頁面 head 部分的代碼的時候,就可以開始下載 head 段中的包括的資源了,類似 CSS 文件、站點收藏圖標(Favicon)等。這些內(nèi)容的下載可以與瀏覽器接受 body 段的內(nèi)容時的時間同步進行。
具體能加速多少,需要因地制宜。這取決于很多客觀條件,包括服務端的響應速度、你的頁面大小、你的 CSS 文件大小和數(shù)量、瀏覽器是否有本地緩存等等。因素固然有很多,不過這樣一個小小的優(yōu)化,就可以顯而易見的為你的站點加速,何樂而不為呢?
我很希望各位把這個小技巧運用在自己網(wǎng)站上,并跟蹤所產(chǎn)生的實際效果。期待大家的反饋。
相關(guān)文章
PHP+Mysql日期時間如何轉(zhuǎn)換(UNIX時間戳和格式化日期)
UNIX時間戳和格式化日期是我們常打交道的兩個時間表示形式,Unix時間戳存儲、處理方便,但是不直觀,格式化日期直觀,但是處理起來不如Unix時間戳那么自如,所以有的時候需要互相轉(zhuǎn)換,下面給出互相轉(zhuǎn)換的幾種轉(zhuǎn)換方式2012-07-07php獲取通過http協(xié)議post提交過來xml數(shù)據(jù)及解析xml
php 如何獲取請求的xml數(shù)據(jù),對方通過http協(xié)議post提交過來xml數(shù)據(jù),php如何獲取到這些數(shù)據(jù)呢?2012-12-12