- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
function minifyJSCSS(&$content) {
global $USER;
global $APPLICATION;
if (is_object($USER) && $USER->IsAdmin()) return;
preg_match_all('/<link.+?href="\/bitrix\/cache[^>]+>/',$content, $result);
foreach ($result[0] as $css)
{
preg_match('/(href)=("[^"]*")/i',$css, $file);
$orig_file = reset(explode('?',str_replace('"','',$file[2])));
if (stristr($orig_file,'.css') === false)
continue;
$min_file = str_replace('.css','.min.css',$orig_file);
if (!file_exists($min_file))
{
$compress = file_get_contents($_SERVER["DOCUMENT_ROOT"].$orig_file);
$compress = preg_replace("!/\*[^*]*\*+([^/][^*]*\*+)*/!", "", $compress);
$compress = str_replace(array("\r\n", "\r", "\n", "\t", " ", " ", " "), "", $compress);
file_put_contents($_SERVER["DOCUMENT_ROOT"].$min_file, $compress);
}
$content = str_replace($orig_file,$min_file,$content);
}
if (strpos($_SERVER['HTTP_USER_AGENT'],'Lighthouse'))
{
preg_match_all('/<script.+?src="\/bitrix\/cache[^>]+>/',$content, $result);
foreach ($result[0] as $js)
{
preg_match('/(src)=("[^"]*")/i',$js, $file);
$orig_file = reset(explode('?',str_replace('"','',$file[2])));
$orig_file = $orig_file;
$min_file = str_replace('.js','.min.js',$orig_file);
if (!file_exists($_SERVER["DOCUMENT_ROOT"].$min_file))
{
$url = 'https://javascript-minifier.com/raw';
$js = file_get_contents($_SERVER["DOCUMENT_ROOT"].$orig_file);
$ch = curl_init();
curl_setopt_array($ch, [
CURLOPT_URL => $url,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => ["Content-Type: application/x-www-form-urlencoded"],
CURLOPT_POSTFIELDS => http_build_query([ "input" => $js ])
]);
$minified = curl_exec($ch);
curl_close($ch);
file_put_contents($_SERVER["DOCUMENT_ROOT"].$min_file,$minified);
$gzdata = gzencode($minified, 9);
file_put_contents($_SERVER["DOCUMENT_ROOT"].$min_file.'.gz', $gzdata);
}
$content = str_replace($orig_file,$min_file,$content);
}
}
}
Жулики-говнокодеры пытались улучшить оценку производительности