PHP程序加速探索之壓縮輸出gzip
添加時間:2014-7-31 17:22:45
添加:
思海網絡
利用Apache中的mod_gzip模塊,我們可以利用gzip的壓縮算法來對Apache服務器發布的網頁內容進行壓縮后再傳輸到客戶端的瀏覽器。如果是純文本的內容,效果非常明顯,大約可以壓縮到原來的30%-40%,使用戶的瀏覽速度大大加快。
Gzip需要客戶端瀏覽器支持,目前大部份瀏覽器都支持gzip,如IE,Netscape,Mozilla等,所以這種方法值得一試。我們可以利用 PHP中的預定義變量$_SERVER[‘HTTP_ACCEPT_ENCODING’]來判斷客戶端瀏覽器是否支持gzip。
gzip1.php
if(ereg('gzip',$_SERVER['HTTP_ACCEPT_ENCODING'])) {
//瀏覽器支持
} else {
//瀏覽器不支持,輸出其它內容
}
?>
接下來我們對上面這個PHP程序進行擴展,使用ob_start(ob_gzhandler)來將網頁內容壓縮,存入緩沖并發送給支持gzip的瀏覽器,瀏覽器會自動將壓縮后的內容解壓,顯示。
gzip2.php
define('MAX',100);
if(ereg('gzip',$_SERVER['HTTP_ACCEPT_ENCODING']))
{
//瀏覽器支持gzip,將內容壓縮并緩沖輸出
ob_start("ob_gzhandler");
$output = '';
for($i=0;$i<=MAX;$i++)
{
$output .= "This is line $i ";
}
echo "瀏覽器支持gzip壓縮輸出";
echo $output;
}
else
{
//瀏覽器不支持,直接輸出
for($i=0;$i<=MAX;$i++)
{
$output .= "This is line $i ";
}
echo "瀏覽器不支持gzip壓縮輸出 ";
echo $output;
}
?>
使用gzip壓縮生成的網頁的HTTP頭信息與一般的網頁相比中會多出這樣的信息:
Content-Encoding: gzip
Content-Length: 270
如果你想得到更詳細的信息,請參看mod_gzip項目主頁:
http://sourceforge.net/projects/mod-gzip/
Gzip需要客戶端瀏覽器支持,目前大部份瀏覽器都支持gzip,如IE,Netscape,Mozilla等,所以這種方法值得一試。我們可以利用 PHP中的預定義變量$_SERVER[‘HTTP_ACCEPT_ENCODING’]來判斷客戶端瀏覽器是否支持gzip。
gzip1.php
if(ereg('gzip',$_SERVER['HTTP_ACCEPT_ENCODING'])) {
//瀏覽器支持
} else {
//瀏覽器不支持,輸出其它內容
}
?>
接下來我們對上面這個PHP程序進行擴展,使用ob_start(ob_gzhandler)來將網頁內容壓縮,存入緩沖并發送給支持gzip的瀏覽器,瀏覽器會自動將壓縮后的內容解壓,顯示。
gzip2.php
define('MAX',100);
if(ereg('gzip',$_SERVER['HTTP_ACCEPT_ENCODING']))
{
//瀏覽器支持gzip,將內容壓縮并緩沖輸出
ob_start("ob_gzhandler");
$output = '';
for($i=0;$i<=MAX;$i++)
{
$output .= "This is line $i ";
}
echo "瀏覽器支持gzip壓縮輸出";
echo $output;
}
else
{
//瀏覽器不支持,直接輸出
for($i=0;$i<=MAX;$i++)
{
$output .= "This is line $i ";
}
echo "瀏覽器不支持gzip壓縮輸出 ";
echo $output;
}
?>
使用gzip壓縮生成的網頁的HTTP頭信息與一般的網頁相比中會多出這樣的信息:
Content-Encoding: gzip
Content-Length: 270
如果你想得到更詳細的信息,請參看mod_gzip項目主頁:
http://sourceforge.net/projects/mod-gzip/
類似地,我們也可以利用mod_deflate,壓縮率比mod_gzip略低一些。調用zip函數需要耗用服務器內存,所以要慎用,視需求而定。
關鍵字:PHP、程序、客戶端、服務器
新文章:
- CentOS7下圖形配置網絡的方法
- CentOS 7如何添加刪除用戶
- 如何解決centos7雙系統后丟失windows啟動項
- CentOS單網卡如何批量添加不同IP段
- CentOS下iconv命令的介紹
- Centos7 SSH密鑰登陸及密碼密鑰雙重驗證詳解
- CentOS 7.1添加刪除用戶的方法
- CentOS查找/掃描局域網打印機IP講解
- CentOS7使用hostapd實現無AP模式的詳解
- su命令不能切換root的解決方法
- 解決VMware下CentOS7網絡重啟出錯
- 解決Centos7雙系統后丟失windows啟動項
- CentOS下如何避免文件覆蓋
- CentOS7和CentOS6系統有什么不同呢
- Centos 6.6默認iptable規則詳解