Что делает:
Собирает скрипты в один файл и отдает его клиенту. таким образом достигается ускорение загрузки странички так как не тратится время на запросы для каждого скрипта. Потом браузер кэширует этот большой скрипт.
Скрипты подключаем так:
Пути относительно местонахождения файла JSCompliter.php. разделять пути к скриптам точкой с запятой.
<script type="text/javascript"
src="JSCompliter.php?scripts=
jquery-1.7.js;
preset.js;
js/libs/jquery.animate-shadow-min.js;
js/libs/jquery.transform.js;
js/libs/jquery.easing.1.3.js;
js/libs/jquery.mousewheel.min.js;
js/libs/jquery.FX.js;
js/libs/jquery.rclick.js;
js/libs/jquery.scrollbar.js;
js/libs/jquery.UI.js;
js/libs/jCanvaScript.js;
windows.js;
js/parseTegs.js;
widgets.js;
"></script>
собственно код
JSCompliter.php
<?php
/**
* @author Maxmaxmaximus
* @version 1.0
*/
Header("content-type: application/x-javascript");
//список адресов скриптов
$scripts = split(';', $_GET['scripts']);
//последнее изменение
$max = 0;
//для каждого элемента списка
for ($i = 0; $i < count($scripts); $i++) {
$url = $scripts[$i];
$ThisMax = filemtime($url);
//определяем последнее изменение одного из скриптов
if($ThisMax > $max){
$max = $ThisMax;
}
}
//если обнаружена разница во времени
if(file_get_contents('version.txt', NULL, NULL, 0, 10) != $max ||
//или в запросе
$_GET['scripts'] != file_get_contents('version.txt', NULL, NULL, 10))
{
//пересобираем
for ($i = 0; $i < count($scripts); $i++) {
$url = $scripts[$i];
$final .= file_get_contents($url);
}
//возвращаем собранный скрипт
echo $final;
//записываем последнее изменение
file_put_contents('version.txt', $max . $_GET['scripts']);
//кэшируем скрипт
file_put_contents('compliteScript.js', $final);
return true;
}
else//иначе
{
//возвражаем готовую копию
echo file_get_contents('compliteScript.js');
}
?>