Ускоряем Youtube Iframe под Google Pagespeed

Просмотров: 425
Бизнес в РБ

При вставке iframe с видео ютуба всегда возникает проблема со скоростью загрузки сайта. Особенно, если таких видео несколько. Для этого решения будем использовать скрипт, который будет подгружать превью видео по id видео и загружать iframe только по клику на превью.

<div class="youtube" id="0wCC3aLXdOw"></div>

Пишем данную строку в месте, где должно выводится видео. Т.е. на месте вашего iframe. В id добавляем id видео. Его можно взять из ссылки на видео. Далее добавляем стили:


.youtube {
    background-position: center;
    background-size:cover;
    background-repeat: no-repeat;
    position: relative;
    display: inline-block;
    overflow: hidden;
    cursor: pointer;
    width: 500px; 
    height: 281px;
}
.youtube .play {
    background: url('../img/play.png') no-repeat; /*укажите адрес до изображения*/
    background-position: 0 -50px;
    -webkit-background-size: 100% auto;
    background-size: 100% auto;
    position: absolute;
    height: 50px;
    width: 69px;
    transition: none;
    top:0;
    left:0;
    right:0;
    bottom:0;
    margin:auto;
}
.youtube:hover .play {
    background-position: 0 0;
}

Конечно, вам нужна иконка play для ютуб. Можете взять эту. Далее добавляем скрипт, который будет обрабатывать наши элементы с классом youtube:

'use strict';
function r(f){/in/.test(document.readyState)?setTimeout('r('+f+')',9):f()}
r(function(){
    if (!document.getElementsByClassName) {
        // Поддержка IE8
        var getElementsByClassName = function(node, classname) {
            var a = [];
            var re = new RegExp('(^| )'+classname+'( |§)');
            var els = node.getElementsByTagName("*");
            for(var i=0,j=els.length; i < j; i++)
                if(re.test(els[i].className))a.push(els[i]);
            return a;
        }
        var videos = getElementsByClassName(document.body,"youtube");
    } else {
        var videos = document.getElementsByClassName("youtube");
    }
    var nb_videos = videos.length;
    for (var i=0; i < nb_videos; i++) {
        videos[i].style.backgroundImage = 'url(http://i.ytimg.com/vi_webp/' + videos[i].id + '/sddefault.webp)';
        var play = document.createElement("div");
        play.setAttribute("class","play");
        videos[i].appendChild(play);
        videos[i].onclick = function() {
            var iframe = document.createElement("iframe");
            var iframe_url = "https://www.youtube.com/embed/" + this.id + "?autoplay=1&autohide=1";
            if (this.getAttribute("data-params")) iframe_url+='&'+this.getAttribute("data-params");
            iframe.setAttribute("src",iframe_url);
            iframe.setAttribute("frameborder",'0');
            iframe.style.width  = this.style.width;
            iframe.style.height = this.style.height;
            this.parentNode.replaceChild(iframe, this);
        }
    }
});

Как мы видим в коде js, превьюшка подгружается в формате webp и определенного размера. Вы можете изменить данный параметр сами. Вот таблица размеров всех превьюшек, который создает ютуб:

Ссылки в формате JPG:

Размер Ссылка Описание
120 х 90 https://i.ytimg.com/vi/VIDEO_ID/default.jpg По умолчанию
120 х 90 https://i.ytimg.com/vi/VIDEO_ID/1.jpg Вариант 1
120 х 90 https://i.ytimg.com/vi/VIDEO_ID/2.jpg Вариант 2
120 х 90 https://i.ytimg.com/vi/VIDEO_ID/3.jpg Вариант 3
320 х 180 https://i.ytimg.com/vi/VIDEO_ID/mqdefault.jpg По умолчанию
320 х 180 https://i.ytimg.com/vi/VIDEO_ID/mq1.jpg Вариант 1
320 х 180 https://i.ytimg.com/vi/VIDEO_ID/mq2.jpg Вариант 2
320 х 180 https://i.ytimg.com/vi/VIDEO_ID/mq3.jpg Вариант 3
480 х 360 https://i.ytimg.com/vi/VIDEO_ID/hqdefault.jpg По умолчанию
480 х 360 https://i.ytimg.com/vi/VIDEO_ID/hq1.jpg Вариант 1
480 х 360 https://i.ytimg.com/vi/VIDEO_ID/hq2.jpg Вариант 2
480 х 360 https://i.ytimg.com/vi/VIDEO_ID/hq3.jpg Вариант 3
640 x 480 https://i.ytimg.com/vi/VIDEO_ID/sddefault.jpg По умолчанию
640 x 480 https://i.ytimg.com/vi/VIDEO_ID/sd1.jpg Вариант 1
640 x 480 https://i.ytimg.com/vi/VIDEO_ID/sd2.jpg Вариант 2
640 x 480 https://i.ytimg.com/vi/VIDEO_ID/sd3.jpg Вариант 3
1280 x 720 https://i.ytimg.com/vi/VIDEO_ID/hq720.jpg Если имеется
- https://i.ytimg.com/vi/VIDEO_ID/maxresdefault.jpg Максимальная

Ссылки в формате WEBP:

Размер Ссылка Описание
120 х 90 https://i.ytimg.com/vi_webp/VIDEO_ID/default.webp По умолчанию
120 х 90 https://i.ytimg.com/vi_webp/VIDEO_ID/1.webp Вариант 1
120 х 90 https://i.ytimg.com/vi_webp/VIDEO_ID/2.webp Вариант 2
120 х 90 https://i.ytimg.com/vi_webp/VIDEO_ID/3.webp Вариант 3
320 х 180 https://i.ytimg.com/vi_webp/VIDEO_ID/mqdefault.webp По умолчанию
320 х 180 https://i.ytimg.com/vi_webp/VIDEO_ID/mq1.webp Вариант 1
320 х 180 https://i.ytimg.com/vi_webp/VIDEO_ID/mq2.webp Вариант 2
320 х 180 https://i.ytimg.com/vi_webp/VIDEO_ID/mq3.webp Вариант 3
480 х 360 https://i.ytimg.com/vi_webp/VIDEO_ID/hqdefault.webp По умолчанию
480 х 360 https://i.ytimg.com/vi_webp/VIDEO_ID/hq1.webp Вариант 1
480 х 360 https://i.ytimg.com/vi_webp/VIDEO_ID/hq2.webp Вариант 2
480 х 360 https://i.ytimg.com/vi_webp/VIDEO_ID/hq3.webp Вариант 3
640 x 480 https://i.ytimg.com/vi_webp/VIDEO_ID/sddefault.webp По умолчанию
640 x 480 https://i.ytimg.com/vi_webp/VIDEO_ID/sd1.webp Вариант 1
640 x 480 https://i.ytimg.com/vi_webp/VIDEO_ID/sd2.webp Вариант 2
640 x 480 https://i.ytimg.com/vi_webp/VIDEO_ID/sd3.webp Вариант 3
1280 x 720 https://i.ytimg.com/vi_webp/VIDEO_ID/hq720.webp Если имеется
- https://i.ytimg.com/vi_webp/VIDEO_ID/maxresdefault.webp Максимальная
баннер

Похожие статьи

Как происходит печать открыток формата А5
Эффективные стратегии подбора ИТ-специалистов: как найти разработчика Python