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=2900
b的資料
啟用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...