網站的訪問速度關系到一個網站的質量,當用戶在客戶端輸入URL的時候你不希望讓他們等太久吧,提高頁面傳遞速度也是提高網站整體速度的一種辦法。通過壓縮頁面大小後傳輸可顯著提高頁面訪問速度。一般情況下都是通過服務器端配置apache module_gzip模塊(<apache2.0)或mod_deflate模塊(>apache2.0)實現支持gzip壓縮來完成。PHP本身也提供了使用zlib擴展來對頁面進行gzip壓縮輸出的方法,下面通過實例詳細說明PHP zlib的使用方法。
zlib與gzip的區別
zlib是一個通用的壓縮開源庫,又是一種數據壓縮格式,gzip也是一種數據壓縮格式,zlib庫默認的壓縮方法並不是gzip,而是zlib的,因此使用zlib壓縮得到gzip格式的數據,通常使用zlib提供的gz***系列函數實現。
PHP zlib安裝
在使用zlib之前首先需要安裝PHP zlib擴展,我是在Windows下進行PHP環境搭建,默認已支持zlib的使用,如果你的PHP環境不支持zlib的使用,請下載zlib的DLL擴展文件放置到PHP.INI配置文件中extension_dir設定的目錄下並加載zlib擴展並重啟服務器即可。
使用PHP zlib實現頁面gzip壓縮輸出的原理
我們知道要想實現php gzip壓縮輸出,首先需要有需要有輸出的內容,其次對內容壓縮後輸出,而PHP的緩存開啟函數ob_start正好可以用來首先存放需要壓縮的內容,然後使用PHP zlib進行gzip算法壓縮後輸出。
使用PHP zlib實現頁面gzip壓縮輸出的方法
1、創建一個包含如下Html文件內容的PHP文件,命名為php-zlib.PHP
<!DOCTYPE html PUBLIC "-//W3C//DTD Html 4.01 Transitional//EN" "http://www.w3.org/TR/Html4/loose.dtd">
<Html>
<head>
<meta http-equiv="Content-Type" content="text/Html; charset=gb2312">
<title>PHP頁面gzip壓縮輸出提高頁面訪問速度實例教程</title>
</head>
<body>
建站學www.jzxue.com-PHP頁面gzip壓縮輸出提高頁面訪問速度實例教程
</body>
</Html>
2、php zlib擴展加載,開啟PHP緩存區對頁面進行gzip壓縮
在頁面頭部添加如下代碼
<?PHP
if(extension_loaded("zlib") && strstr($_SERVER["HTTP_ACCEPT_ENCODING"],"gzip")){
ob_start("ob_gzhandler");
}else {
echo "PHP zlib使用失敗,請確認是否已加載zlib擴展";
exit();
}
?>
PHP zlib使用知識點:
1、使用extension_loaded函數判斷PHP zlib擴展是否已加載,並通過$_SERVER["HTTP_ACCEPT_ENCODING"]獲取頭部信息判斷是否支持PHP gzip壓縮。PHP環境變量$_SERVER和系統常量詳解
2、通過ob_start(”ob_gzhandler”)告知對緩存區的內容使用ob_gzhandler函數進行壓縮以得到gzip壓縮格式的數據,如果客戶端不支持壓縮的頁面則此函數返回false。
3、輸出緩存並關閉緩存
在頁面尾部添加如下代碼
<?PHP
if(extension_loaded("zlib")){
ob_end_flush();
}
?>
至此,最簡單的使用php zlib擴展實現頁面gzip壓縮的工作就完成了,下面使用YSlow插件可以看到原本此頁面大小為0.4k,經過使用php gzip壓縮後大小為0.3k。除了使用ob_gzhandler內置函數進行gzip壓縮外,結合php zlib擴展提供的gzencode()函數可自定義壓縮函數進行更大比例的壓縮,更多PHP zlib擴展的使用方法下次再介紹。