Accept-Encoding: gzip<?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 bytes | 97.8% ↓ |
| 回應標頭 | - | Content-Encoding: gzip Vary: Accept-Encoding Content-Length: 104 | - |
php.ini 設定 zlib.output_compression = On + zlib.output_compression_level = 6 全域啟用(無需修改程式碼)mod_deflate 處理,PHP 僅處理動態頁面