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

PHP 一鍵檢測服務器 Gzip 壓縮支援:從 phpinfo 到自動化腳本

     編輯:PHP 綜合知識

原理:HTTP_ACCEPT_ENCODING

瀏覽器請求頭發送 Accept-Encoding: gzip, deflate, br,PHP 通過 $_SERVER['HTTP_ACCEPT_ENCODING'] 獲取。若包含 gzip,說明客戶端支援;服務端是否實際壓縮,取決於 Web 服務器(Nginx/Apache)配置與 PHP zlib.output_compression。

方法 1:phpinfo() 手工查看(最直觀)

<?php phpinfo(); ?>

瀏覽器打開,搜尋 HTTP_ACCEPT_ENCODING,看值是否含 gzip。

方法 2:獨立檢測腳本(可納入部署檢查)

<?php
/**
 * 檢測服務端 Gzip 輸出壓縮是否生效
 * 需在瀏覽器訪問此腳本,觀察回應頭 Content-Encoding
 */
header('Content-Type: text/plain; charset=utf-8');

$accept = $_SERVER['HTTP_ACCEPT_ENCODING'] ?? '';
$zlibEnabled = ini_get('zlib.output_compression');
$zlibLevel = ini_get('zlib.output_compression_level');

echo "=== 客戶端支援 ===\n";
echo "HTTP_ACCEPT_ENCODING: {$accept}\n";
echo "支援 gzip: " . (stripos($accept, 'gzip') !== false ? '是' : '否') . "\n\n";

echo "=== PHP 配置 ===\n";
echo "zlib.output_compression: " . ($zlibEnabled ? "On (level {$zlibLevel})" : 'Off') . "\n\n";

echo "=== 實際回應頭(需瀏覽器 F12 Network 查看)===\n";
echo "Content-Encoding: " . (headers_sent() ? '已發送,無法獲取' : '請查看 Network 面板') . "\n";

// 強制輸出一段長文本觸發壓縮(若 zlib.output_compression=On)
echo str_repeat("Gzip 測試內容行\n", 200);

方法 3:命令行 curl 驗證(自動化 CI/CD 適用)

# 請求並顯示回應頭
curl -I -H "Accept-Encoding: gzip" https://your-domain.com/test.php

# 關鍵指標:Content-Encoding: gzip
# 若無,檢查 Nginx/Apache 配置

Nginx 啟用 Gzip 核心配置

# nginx.conf http 段
gzip on;
gzip_vary on;
gzip_min_length 1k;
gzip_comp_level 6;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
gzip_disable "MSIE [1-6]\\.";

Apache (mod_deflate) 核心配置

<IfModule mod_deflate.c>
    AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript application/javascript application/json
    DeflateCompressionLevel 6
</IfModule>

PHP 端 zlib.output_compression(不推薦,交給 Web 服務器)

; php.ini
zlib.output_compression = On
zlib.output_compression_level = 6

缺點:影響所有 PHP 輸出(含圖片/PDF 等二進制),無法精細控制 MIME 類型,易導致二進制損壞。生產環境建議關閉 PHP 層壓縮,由 Nginx/Apache 統一處理。

快速驗證清單

  • [ ] 瀏覽器 Network → Response Headers 含 Content-Encoding: gzip
  • [ ] Vary: Accept-Encoding 存在(CDN 快取正確)
  • [ ] 壓縮前後體積對比 > 70%(文本類)
  • [ ] 圖片/字體/視頻未被壓縮(二進制已壓縮,再壓無效且浪費 CPU)
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved