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