程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> PHP綜合 >> PHP頁面gzip壓縮輸出提高頁面訪問速度

PHP頁面gzip壓縮輸出提高頁面訪問速度

編輯:PHP綜合

網站的訪問速度關系到一個網站的質量,當用戶在客戶端輸入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擴展的使用方法下次再介紹。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved