核心價值
- 減少 HTTP 請求:多文件合並為一。
- 減小體積:移除空白、註釋、壓縮標識符。
- 自動緩存:支援 ETag、Last-Modified、版本號查詢串。
- 零構建流程:PHP 運行時動態處理,適合老專案快速接入。
三步接入
1. 安裝
composer require mrclay/minify
# 或手動下載 https://github.com/mrclay/minify/releases 解壓 min/ 到 DocumentRoot
2. 配置分組 (min/groupsConfig.php)
<?php
return [
'js-common' => [
'//js/jquery-3.6.0.min.js',
'//js/bootstrap.bundle.min.js',
'//js/app.js'
],
'css-common' => [
'//css/bootstrap.min.css',
'//css/app.css'
]
];
3. 頁面引用
<script src="/min/g=js-common&v=20240115"></script>
<link rel="stylesheet" href="/min/g=css-common&v=20240115">
關鍵配置 (min/config.php)
<?php
$min_cachePath = '/tmp/minify_cache'; // 必須可寫
$min_allowDebugFlag = true; // 開發時 ?debug=1 看未壓縮源碼
// $min_serveOptions['maxAge'] = 31536000; // 生產環境緩存 1 年
Web 服務器重寫規則
# Apache .htaccess (放在 min/ 目錄)
RewriteEngine On
RewriteRule ^g=([^&]+) index.php?g=$1 [L,QSA]
RewriteRule ^f=([^&]+) index.php?f=$1 [L,QSA]
# Nginx
location /min/ {
try_files $uri $uri/ /min/index.php?$query_string;
}
開發 vs 生產環境差異