Main menu

Загрузка youtube видео после сайта

Yazov Rating Yazov Rating Yazov Rating Yazov Rating Yazov Rating Рейтинг 5.00 (45 Голосов)

Наверное многие сталкивались с тем, что вставленное в статью или модуль сайта, видео с ресурса youtube на протяжении загрузки сайта подгружается(а именно плеер), тем самым сильно снижая скорость загрузки сайта в целом. (Даже если видео не запускать уходит очень много трафика и запросов на то, чтобы вывести плеер в модуль или статью) Я задался целью решить эту проблему. А именно сделать так, чтобы плеер начинал грузиться уже после того как загрузится весь сайт, при этом не смещая видео с позиции, в данном случае, модуля. Тем самым загружается весь сайт (уже гораздо быстрее, так как запросы идут только на ваш хост, да и сам ютуб не грузится паралельно с сайтом) а только потом грузится плеер. 
Разберём вариант с Joomla! Так как я решил осуществить задумку именно на этом движке.

Возможно я начал изобретать велосипед, но честно говоря гугл мне мало чем помог, а идти на форум и просить готовое мне прото не хотелось.
Итак приступим. Если же у нас Joomla то мы сразу же сталкиваемся с проблемой вставки PHP кода в мдуль. Ибо движок тупо вычищает код. Для этого ставим модуль
mod_phpfile либо какой ни-будь другой. Этот вариант очень прост, так как он просто подключает PHP файл в модуль.
Либо можно самому написать такой модуль, единственная разница будет состоять в его установке.
Теперь вставляем в шаблон (/папка шаблона/index.php) где ни-будь вверху, например сразу после открывающего тега PHP <?php, данный код:

$document =& JFactory::getDocument();
$scr ="
do_nothing( function() {
var elements = $$('.youtube1');
for (var i=0; i<elements.length; i++) {
video = elements[i].getAttribute('rel');
if (video != undefined) {
elements[i].innerHTML = '<iframe width=\"560\" height=\"360\" src=\"http://www.youtube.com/embed/'+video+'\" ></iframe>';
}}});";
$document->addScriptDeclaration($scr); 

Т.е. любой контейнер с классом "youtube1" и атрибутом "rel" будет являть собой видео ютуба.
Здесь же можно изменить ширину и высоту. Атрибут "rel" это ID самого видео.
Например ID этого видео: 2MWOdqBq0uI
Ну вот теперь если мы вставим код

<div class="youtube1" rel="2MWOdqBq0uI"/div> 

в модуль или статью, то плеер и что либо вообще связанное с этим видео будет грузится после того как загрузится наш сайт.
Так как мы в данном случае пользуемся модулем mod_phpfile то мы просто напросто создаём PHP файл с любым названием, заливаем его на хост(например в корень движка) и указываем его в модуле. А сам модуль распологаете так как вам хочется.
После этого чистим кэш Joomla и браузера (так, на всякий случай) и обновляем наш сайт. По точной статистике загрузки сайта видно что запросы к youtube начинают отправлятся уже после того, как полностью загрузился наш сайт.
Этот хак заметно ускорит загрузку сайта с youtube видео на борту. :)

Follow me on TwitterЯ ВКонтакте