Показать сообщение отдельно
  #1 (permalink)  
Старый 01.01.2012, 19:46
Профессор
Посмотреть профиль Найти все сообщения от Livaanderiamarum
 
Регистрация: 25.12.2011
Сообщений: 786

СБОРЩИК СКРИПТОВ в один файл!!!!!
Что делает:
Собирает скрипты в один файл и отдает его клиенту. таким образом достигается ускорение загрузки странички так как не тратится время на запросы для каждого скрипта. Потом браузер кэширует этот большой скрипт.

Скрипты подключаем так:
Пути относительно местонахождения файла 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');
}
?>

Последний раз редактировалось Livaanderiamarum, 01.01.2012 в 19:49.
Ответить с цитированием