瀏覽器請求頭發送 Accept-Encoding: gzip, deflate, br,PHP 通過 $_SERVER['HTTP_ACCEPT_ENCODING'] 獲取。若包含 gzip,說明客戶端支援;服務端是否實際壓縮,取決於 Web 服務器(Nginx/Apache)配置與 PHP zlib.output_compression。
<?php phpinfo(); ?>
瀏覽器打開,搜尋 HTTP_ACCEPT_ENCODING,看值是否含 gzip。
<?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);
# 請求並顯示回應頭
curl -I -H "Accept-Encoding: gzip" https://your-domain.com/test.php
# 關鍵指標:Content-Encoding: gzip
# 若無,檢查 Nginx/Apache 配置
# 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]\\.";
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript application/javascript application/json
DeflateCompressionLevel 6
</IfModule>
; php.ini
zlib.output_compression = On
zlib.output_compression_level = 6
缺點:影響所有 PHP 輸出(含圖片/PDF 等二進制),無法精細控制 MIME 類型,易導致二進制損壞。生產環境建議關閉 PHP 層壓縮,由 Nginx/Apache 統一處理。
Content-Encoding: gzipVary: Accept-Encoding 存在(CDN 快取正確)