首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

PHP zlib 擴充套件實現 GZIP 頁面壓縮輸出:提升傳輸效能 70%+

     編輯:PHP 綜合知識

GZIP 壓縮原理與效益

  • 伺服器壓縮 → 傳輸 → 瀏覽器解壓解析
  • 現代瀏覽器 100% 支援 Accept-Encoding: gzip
  • 典型 HTML 頁面壓縮率 70%-90%,頻寬節省顯著
  • CPU 開銷極低,效能收益遠大於成本

核心實作:輸出緩衝 + zlib 壓縮

<?php
// 1. 啟用帶壓縮回調的輸出緩衝(放在腳本最頂端)
ob_start('ob_gzip');

// 2. 正常輸出內容
for ($i = 0; $i < 100; $i++) {
    echo '這裡是壓縮測試內容,重複輸出以驗證壓縮效果。';
}

// 3. 結束緩衝並輸出(或讓腳本結束自動 flush)
ob_end_flush();

// 4. 壓縮回調函數
function ob_gzip($content) {
    // 三重守衛:headers 未送出、zlib 已載入、瀏覽器支援 gzip
    if (!headers_sent() 
        && extension_loaded('zlib') 
        && strpos($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip') !== false) {
        
        // 級別 9 最高壓縮(0-9),附加註解標識
        $content = gzencode($content . "\n//此頁已壓縮", 9);
        
        // 發送必要回應標頭
        header('Content-Encoding: gzip');
        header('Vary: Accept-Encoding');
        header('Content-Length: ' . strlen($content));
    }
    return $content;
}
?>

實測數據對比

指標未壓縮GZIP 級別 9壓縮率
傳輸大小4.69 KB (4802 bytes)104 bytes97.8% ↓
回應標頭-Content-Encoding: gzip
Vary: Accept-Encoding
Content-Length: 104
-

進階優化建議

  • php.ini 設定 zlib.output_compression = On + zlib.output_compression_level = 6 全域啟用(無需修改程式碼)
  • 靜態資源(CSS/JS/圖片)由 Nginx/Apache mod_deflate 處理,PHP 僅處理動態頁面
  • API 介面回應 JSON 同樣適用,壓縮率極高
  • 避免對已壓縮格式(圖片、PDF、ZIP)二次壓縮,浪費 CPU
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved