PHP使用zlib實現頁面的gzip壓縮輸出

2021-06-10 02:09:31 字數 1439 閱讀 8207

php中的gzip(gnu-zip)是一種壓縮技術。經過gzip壓縮後頁面大小可以變為原來的30%甚至更小。這樣使用者瀏覽的時候就會感覺很快。

要實現gzip壓縮頁面需要瀏覽器和

伺服器共同支援,實際上就是伺服器壓縮,傳到瀏覽器後瀏覽器解壓並解析。瀏覽器那邊不需要我們擔心,因為現在絕大多數瀏覽器都支援解析gzip過的頁面。我們只要把頁面在伺服器端壓縮再輸出到瀏覽器就行了。

要壓縮乙個頁面,首先要獲得要輸出的內容。php中的ob_start()(ob => output buffer)函式可以實現這個功能,它可以把程式裡準備輸出的內容先放到乙個叫做「緩衝區」的地方。這個函式一定要在頁面輸出之前使用,所以一般把它放在**的最頂端。

方法一

用php內建方法

<?php

if(extension_loaded('zlib')) ob_start('ob_gzhandler');

header("content-type: text/html; charset=utf-8");

//準備一些待壓縮的內容

for($i=0; $i< 100; $i++)

if(extension_loaded('zlib')) ob_end_flush();

?>

方法二

用自寫方法實現gzip壓縮

/**

* 壓縮輸出方法 gzip壓縮函式

* @param $content mixed 要壓縮的頁面內容

*/function ob_gzip($content)

return $content; //返回壓縮的內容

}

呼叫方法:

給ob_start方法傳入

ob_gzip作為callback引數,這樣當內容進入緩衝區後php就會呼叫ob_gzip函式把它壓縮了,然後用ob_end_flush()方法重新整理緩衝區,輸出內容

<?php

//啟用乙個帶有ob_gzip壓縮機的工作台

ob_start('ob_gzip');

//準備一些待壓縮的內容

for($i=0; $i< 100; $i++)

//輸出壓縮成果

ob_end_flush();

/** * 壓縮輸出方法 gzip壓縮函式

* @param $content mixed 要壓縮的頁面內容

*/function ob_gzip($content)

return $content; //返回壓縮的內容

}?>

經過實際測試,用firebug可以看到

如果不啟用gzip需要傳輸2.8kb=2900b的資料

啟用gzip後縮小為83b

PHP使用zlib擴充套件實現頁面GZIP壓縮輸出

有點羅嗦,下面說正事 正如要製作壓縮餅乾,先要拿到原料,要壓縮乙個頁面,首先要獲得要輸出的內容。php中的ob start ob output buffer 函式可以實現這個功能,它可以把程式裡準備輸出的內容先放到乙個叫做 緩衝區 的地方,當然,你可以理解為製作壓縮餅乾的暫時放原料的工作台。這個函式...

php技術生成靜態頁面的實現

我們先回顧一些基本的概念。一 php指令碼與動態頁面。php指令碼是一種伺服器端指令碼程式,可通過嵌入等方法與html檔案混合,也可以類,函式封裝等形式,以模板的方式對使用者請求進行處理。無論以何種方式,它的基本原理是這樣的。由客戶端提出請求,請求某一頁面 web伺服器引入指定相應指令碼進行處理 指...

php實現登入頁面的簡單例項

開始自然是從最簡單的功能起步,我第乙個任務選擇了做乙個登入操作,其實也沒想象中那麼簡單。1 首先自然是連線和建立資料庫 這部分我寫在model.php中 username root password host localhost database login 建立連線 conn mysqli con...