建站教程:控制PHP的輸出,緩存并壓縮動(dòng)態(tài)頁(yè)面

2022-06-06    分類(lèi): 網(wǎng)站建設(shè)

PHP4中最令人滿(mǎn)意的事是——你可以讓PHP緩存所有由腳本生成的輸出,在你決定把它們送出之前,瀏覽器方是不會(huì)收到任何內(nèi)容的。

mod_gzip是一個(gè)Apache模塊,其功能是使用Gzip壓縮靜態(tài)的html頁(yè)面,遵循IETF標(biāo)準(zhǔn)的瀏覽器可以接受gzip編碼(IE, Netscape等)。mod_gzip可以將頁(yè)面的下載時(shí)間提高4-5倍。我們強(qiáng)烈建議你在你的web服務(wù)器上使用mod_gzip。然而,我們還必須用PHP建立我們自己的壓縮引擎。在這篇文章里,我們將要介紹如何使用PHP的輸出控制函數(shù)來(lái)大幅加速頁(yè)面載入速度。

介紹PHP的輸出控制函數(shù)

PHP4中最令人滿(mǎn)意的事是——你可以讓PHP緩存所有由腳本生成的輸出,在你決定把它們送出之前,瀏覽器方是不會(huì)收到任何內(nèi)容的。在腳本程序中你能用這些函數(shù)來(lái)設(shè)置header、cookies,然而這只是強(qiáng)大的輸出函數(shù)的一小部分功能。

告訴PHP處理器把所有的輸出重定向到一個(gè)內(nèi)部的緩存(buffer)中。在調(diào)用ob_start之前,沒(méi)有輸出會(huì)被送到瀏覽器去。

該函數(shù)將“輸出緩存”(output buffer)以字符串的形式返回。你可以調(diào)用該函數(shù)把積累下來(lái)的輸出送到瀏覽器中。(僅在把buffering功能關(guān)閉之后!!)

返回緩存中的字符串的長(zhǎng)度。

清空輸出緩存,并將輸出緩存關(guān)閉。在緩存中的內(nèi)容輸出到瀏覽器之前,必須使用這個(gè)函數(shù)。

void 501([int flag])

用來(lái)打開(kāi)/關(guān)閉隱含的flush動(dòng)作開(kāi)關(guān)(默認(rèn)是關(guān))。如果flush是開(kāi)的,每次調(diào)用print/echo或是其它輸出命令的時(shí)候,輸出的內(nèi)容會(huì)被立即送到瀏覽器端。

使用輸出控制來(lái)壓縮PHP輸出

你必須使用PHP4里編譯的Zlib擴(kuò)展包來(lái)壓縮輸出。如果需要的話(huà),可以查看PHP文檔中有關(guān)Zlib包的安裝指導(dǎo)。

首先,初始化輸出緩存:

之后,用print, echo, 或其他你喜歡的方法生成所有輸出內(nèi)容,例如:

頁(yè)面生成后,我們?nèi)』剌敵鰞?nèi)容:

之后,必須檢測(cè)瀏覽器是否支持壓縮數(shù)據(jù)。如果支持,瀏覽器會(huì)發(fā)給服務(wù)器端一個(gè)ACCEPT-ENCODEING HTTP頭。我們只需檢查$HTTP_ACCEPT_ENCODING變量中是否有“gzip,deflate”字串。

這種方法使用起來(lái)既簡(jiǎn)單又結(jié)構(gòu)清晰。下面讓我們看看如何生成壓縮的輸出:

要想進(jìn)行實(shí)際的測(cè)試,所有的腳本代碼如下:

當(dāng)PHP4還沒(méi)問(wèn)世,我不得不使用PHP3的時(shí)候,我對(duì)開(kāi)發(fā)一些緩存機(jī)制來(lái)減少數(shù)據(jù)庫(kù)的載入、對(duì)文件系統(tǒng)的存取十分感興趣。在PHP3中沒(méi)有什么特別好的方法,但是有了輸出緩存之后,在PHP4中一切變得容易多了。

這有一個(gè)簡(jiǎn)單的例子:

這是一個(gè)簡(jiǎn)單的例子,使用輸出緩存,你可以建立一個(gè)復(fù)雜的內(nèi)容生成系統(tǒng),對(duì)不同的塊或程序使用不同的緩存機(jī)制,等等……

結(jié)論

PHP輸出控制函數(shù)對(duì)把網(wǎng)站建設(shè)中腳本生成的輸出重定向到緩存中十分有用。為支持gzip的瀏覽器輸出壓過(guò)的緩存數(shù)據(jù)可以減少載入時(shí)間。也可作為緩存機(jī)制來(lái)減少對(duì)數(shù)據(jù)源的存取(數(shù)據(jù)庫(kù)或文件),這對(duì)使用XML意義重大。

如果我們用PHP建立一個(gè)引擎,緩存從數(shù)據(jù)源得到的數(shù)據(jù)(xml文檔和數(shù)據(jù)庫(kù)),并且動(dòng)態(tài)的生成XML格式的內(nèi)容(沒(méi)有外觀-presentation)我們可以得到這些XML的輸出,并使用XSLT轉(zhuǎn)換成任意一種我們想要的外觀格式(html, wap, palm, pdf等)。使用PHP4的輸出緩存和Sablotron XSLT擴(kuò)展可以很好地完成這個(gè)任務(wù)。

當(dāng)前標(biāo)題:建站教程:控制PHP的輸出,緩存并壓縮動(dòng)態(tài)頁(yè)面
轉(zhuǎn)載來(lái)源:http://www.muchs.cn/news15/164115.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供動(dòng)態(tài)網(wǎng)站、網(wǎng)站收錄、品牌網(wǎng)站制作域名注冊(cè)、網(wǎng)頁(yè)設(shè)計(jì)公司、品牌網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

綿陽(yáng)服務(wù)器托管