ob_gzhandler 是 PHP 內建的輸出緩衝處理器,可自動偵測瀏覽器支援並壓縮輸出。以下是三種啟用方式:
output_handler = ob_gzhandler
優點:全站生效,一次設定永久有效。缺點:共享主機通常無法修改。
php_value output_handler ob_gzhandler
優點:目錄層級控制,無需修改 PHP 程式碼。缺點:僅限 Apache,且需 AllowOverride 權限。
ob_start('ob_gzhandler');
放在腳本最開頭(任何輸出前),可精確控制哪些頁面壓縮。
靜態檔案預設不經 PHP 處理,但可透過改副檔名為 .php 並送出正確 Header 來達成。
style.css 為 style.css.php<?php
if (extension_loaded('zlib')) { ob_start('ob_gzhandler'); }
header("Content-type: text/css; charset: UTF-8");
?>
<?php if (extension_loaded('zlib')) { ob_end_flush(); } ?>
<link rel="stylesheet" type="text/css" href="/style.css.php" />
<?php
if (extension_loaded('zlib')) { ob_start('ob_gzhandler'); }
header("Content-Type: application/javascript; charset: UTF-8");
?>
// 你的 JS 代碼
<?php if (extension_loaded('zlib')) { ob_end_flush(); } ?>
引用時:<script src="/script.js.php"></script>
zlib 擴展(`extension_loaded('zlib')`)。zlib.output_compression_level 調整(1-9,預設 6)。mod_deflate、ngx_http_gzip_module)效能更佳。