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

PHP 使用 ob_gzhandler 實現 Gzip 壓縮的三種方法與 CSS/JS 應用實戰

     編輯:PHP 相關知識

PHP 開啟 Gzip 壓縮的三種途徑

ob_gzhandler 是 PHP 內建的輸出緩衝處理器,可自動偵測瀏覽器支援並壓縮輸出。以下是三種啟用方式:

方法一:修改 php.ini(需主機權限)

output_handler = ob_gzhandler

優點:全站生效,一次設定永久有效。缺點:共享主機通常無法修改。

方法二:.htaccess 設定(Apache 環境)

php_value output_handler ob_gzhandler

優點:目錄層級控制,無需修改 PHP 程式碼。缺點:僅限 Apache,且需 AllowOverride 權限。

方法三:程式碼啟動(最靈活,推薦)

ob_start('ob_gzhandler');

放在腳本最開頭(任何輸出前),可精確控制哪些頁面壓縮。

實戰:對 CSS 與 JavaScript 檔案啟用 Gzip

靜態檔案預設不經 PHP 處理,但可透過改副檔名為 .php 並送出正確 Header 來達成。

CSS 壓縮範例

  1. 複製 style.css 為 style.css.php
  2. 頂部加入:
<?php
if (extension_loaded('zlib')) { ob_start('ob_gzhandler'); }
header("Content-type: text/css; charset: UTF-8");
?>
  1. 底部加入:
<?php if (extension_loaded('zlib')) { ob_end_flush(); } ?>
  1. HTML 中引用:
<link rel="stylesheet" type="text/css" href="/style.css.php" />

JavaScript 壓縮同理

<?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)。
  • 對於大型靜態資源,建議改用 Nginx/Apache 內建模組(mod_deflate、ngx_http_gzip_module)效能更佳。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved