37 lines
1 KiB
PHP
37 lines
1 KiB
PHP
<?php
|
|
|
|
define('PROJECT_ROOT', realpath(__DIR__ . '/..'));
|
|
|
|
require_once PROJECT_ROOT . '/vendor/autoload.php';
|
|
require_once PROJECT_ROOT . '/app/Utils/init.php';
|
|
|
|
use voku\helper\HtmlMin;
|
|
|
|
$requestUri = $_SERVER['REQUEST_URI'] ?? '';
|
|
$acceptHeader = $_SERVER['HTTP_ACCEPT'] ?? '';
|
|
$isApi = str_starts_with($requestUri, '/api/');
|
|
$isHtml = stripos($acceptHeader, 'text/html') !== false || empty($acceptHeader);
|
|
|
|
if (!$isApi && $isHtml) {
|
|
ob_start(function ($buffer) {
|
|
if (stripos($buffer, '<body') !== false) {
|
|
try {
|
|
$minifier = new HtmlMin();
|
|
$buffer = $minifier->minify($buffer);
|
|
|
|
if (stripos($buffer, '</body>') === false) {
|
|
$buffer .= '</body>';
|
|
}
|
|
|
|
if (stripos($buffer, '</html>') === false) {
|
|
$buffer .= '</html>';
|
|
}
|
|
|
|
} catch (Throwable $e) {
|
|
error_log("HTML minification failed: " . $e->getMessage());
|
|
}
|
|
}
|
|
|
|
return $buffer;
|
|
});
|
|
}
|