Быстрая подгрузка встроенного видео YouTube средствами JavaScript

Быстрая подгрузка встроенного видео YouTube средствами JavaScript | n-wp.ru
Код для замещения видео из YouTube на странице его миниатюрой. Это позволяет сократить время загрузки страницы.
👍 Научим бесплатно правильно создавать сайты на WordPress. Подробнее →

При вставке видео из YouTube на страницу встроенными средствами WordPress страница получается не самой быстрой — она полностью загрузится только тогда, когда отобразится видео. А если видео роликов несколько, то иногда ждать их загрузки приходится долго. Выходом из этой ситуации является отложенная загрузка видео — вместо него на странице отображается миниатюра (изображение), а само видео начинает загружаться только после клика по миниатюре. Такой способ быстрой загрузки может существенно сократить общее время загрузки страницы. Есть множество плагинов, которые позволяют делать отложенную загрузку видео из YouTube, но речь в этом посте не о них, а о том, как можно реализовать такое без плагинов.

Быстрая подгрузка встроенного видео YouTube средствами JavaScript

Тут на помощь приходит Java-код. С его помощью, указав данные видео (достаточно одного ID), можно получить его миниатюру. Вставьте в файл header.php:

"use strict";
$(function() {
    $(".youtube").each(function() {
        // определение миниатюры
        $(this).css('background-image', 'url(http://i.ytimg.com/vi/' + this.id + '/sddefault.jpg)');

        // значок Play поверх миниатюры
        $(this).append($('
‘, {‘class’: ‘play’})); $(document).delegate(‘#’+this.id, ‘click’, function() { // iframe со включенной опцией autoplay var iframe_url = “https://www.youtube.com/embed/” + this.id + “?autoplay=1&autohide=1″; if ($(this).data(‘params’)) iframe_url+=’&’+$(this).data(‘params’); // Высота и ширина iframe var iframe = $(”, {‘frameborder’: ‘0’, ‘src’: iframe_url, ‘width’: $(this).width(), ‘height’: $(this).height() }) // Замена миниатюры плеером $(this).replaceWith(iframe); }); }); });

Обратите внимание на sddefault.jpg — это миниатюра, которая используется для отображения на странице. YouTube создает несколько миниатюр, каждая со своим размером:

default.jpg — 120px на 90px
hqdefault.jpg — 480px на 360px
mqdefault.jpg — 32px на 180px
sddefault.jpg — 640px на 480px
maxresdefault — 1280px на 720px

Вы можете использовать любую из этих миниатюр, вставив в код ее название.

В файл style.css вставьте код оформления блока с миниатюрой:

.youtube {
    background-position: center;
    background-repeat: no-repeat;
    position: relative;
    display: inline-block;
    overflow: hidden;
    transition: all 200ms ease-out;
    cursor: pointer;
}

.youtube .play {
    background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAERklEQVR4nOWbTWhcVRTHb1IJVoxGtNCNdal2JYJReC6GWuO83PM/59yUS3FRFARdFlwYP1CfiojQWt36sRCUurRIdVFXIn41lAoVdRGrG1M01YpKrWjiYmaSl8ybZJL3cd+YA//NLObd3++eO8x79z5jSq5Gw+8kov0AP8vMR5l1BtBZQM4B8ks75wCdZdYZZj5qLZ4hov2Nht9Z9vhKKSIaB/gI4M4w62KeAO6Mte4lYOq20FxrlqqOibhHmeWbvNC9ZfDX1mLae391aN6limO/gwgvAPJbWeAZuSDingdwXTBw7/0IsyaA/Fkh+KqOkD+YNfHej1QKD+y7iVlOhgLvFqFfNJvNGyuBJ+KDAF8MDd0tgS8y64OlgSdJMsysL4cG7SOHkyQZLhTee7+d2R2rAVy/S+Jd7/32ouBHAP4gNNRGQyTHc/84NhqNywZp5rvjjnnvt21aABFeCQ+RLwAf2hQ8s7sv9OCLk6AHNgQvIrvbfzKCD76g/O6cu7lf/iER/aQGgy448pExZmhdegAPhR9sObFWH1gT3lp7DaA/5bkIgJhZPgsNmz02novj+KqeApj1ubwXWe4kdyeznAgNvTpE/HQmvKqOMeuFogTUVQSRno+iaLRLAJF7uIgL9O4ubgL8aWgB7S44mNX+35YpICUiAvS9sBLkq1WzT+NFffl6AuoiApi6NT37h6sWkBIRZGkQ8YtLgyji6e1mBYTqCEBPG2Naz+0BWQgtoGoRgCzEsd9hAN1X5BfnFZASUfrSAFQNsyZ1FJASUVpHiLinDJG8U2cBZYogkrcNs5waBAGdstbeU9zdqpw0gPwwSAI6VUxHyFlDpOcHUUBBIuYNs14aZAE5RVwyzPr3/0EAEY0TyfGNjBWQvwZ +CTSbehfAH29mrID8bET0+0EUkAd8WYDOmqJ3ecsG30yr9wqRfm6Y+a1BEFDEjHfHvWmY9ck6CygHvBVr8Xhtb4ZE5HZA3y8DvBNA1TjnrmXWf+sioMwZX5V/VHXMGGMMoKdDCxCRvRWBdzKzdHEO+EisilbPyopHYqp6S9UCAsz4iojI7hUDAtyXVQgIDd6KnOoaWNkbI6FaPSuZGyMArsi7MZoloB4zviI/Nhr3X95jltwTRQmoIfgisy5ai+me67OI7fE4nrqjrqfK1t0eby0FPRB6oGVlchL3rgnfrq19RKbVBdhV9IOSwJmfmJi4vi/4ThERitwyCxVAFqydshuCX5awhQ9KtmuIWd8IDZED/nXT77rvVVv6sHRKwjYi91poqP7Dr+Y6JJ1VSZIMA3wkPNy6bX+o8Bcm0sXMdwM8Fxo0A3xORPaWBp6uPXsmbxCRD0NDL0dOANhVCXy6iAjMcjbcrMt3RITKwdMVRdFo+y5yvkL4eWZ+zHt/ZVD4dEVRNGotpst+dZZZH8k86lqn2pIvT/eqrNfn2xuyqYPZ8mv7s8pfn/8Pybm4TIjanscAAAAASUVORK5CYII=") no-repeat center center;
    background-size: 64px 64px;
    position: absolute;
    height: 100%;
    width: 100%;
    opacity: .8;
    filter: alpha(opacity=80);
    transition: all 0.2s ease-out;
}

.youtube .play:hover {
    opacity: 1;
    filter: alpha(opacity=100);
}

Для того, чтобы плеер в виде миниатюры отображался на странице, нужно вставить в ее код с Youtube.

</pre>
<p>YouTube предоставляет несколько параметров для отображения разных элементов управления в своем плеере:</p><script data-noptimize="" data-wpfc-render="false">
/* <![CDATA[ */
fpm_start( "true" );
/* ]]> */
</script>

<p>controls: если вы установите 0, то элементы управления не будут отображаться<br />
modestbranding: если вы установите 1, то логотип YouTube не будет отображаться<br />
rel: если вы установите 0, то по завершению ролика не будут отображаться похожие видео<br />
showinfo: если вы установите 0, то подробная информация о видео отображаться не будет<br />
start: время старта видео от начала<br />
vq: если вы установите hd720, то видео будет отображаться в высшем качестве, если такое доступно.</p>
<pre>

Вот такой вот прием позволяет кардинально уменьшить время загрузки страницы со множеством роликов из YouTube за счет уменьшения самого размера страницы и уменьшения количества запросов, что благотворно скажется не только на юзабилити (посетители не ждут, пока подгрузятся все видео ролики), но и на индексации (Google любит быстрые сайты).

Создай свой первый сайт на WordPress

tiaurus

Автор n-wp.ru — блога о WordPress для новичков.

Оцените автора
Добавить комментарий

  1. Kirill

    А куда вставить ?rel0? чтобы при проигрывании потом не показывались похожие видео?

    Ответить
  2. D.E.

    1. В строчке
    var iframe = $(”,
    нужно поставить между скобок
    var iframe = $(”,
    иначе код не работает

    2. Для дополнительных параметров добавляем data-params в div

    Ответить
    1. D.E.

      2. Для дополнительных параметров добавляем data-params в div

      Ответить
      1. D.E.

        Блин, комменты режут код.
        Итак.
        1. var iframe = $(‘ ‘, на var iframe = $(‘ ‘
        (уберите пробел перед > и после <)
        2.

        Если снова подрежут, то ищите нормальный код в сети по такому же заголовку

        Ответить
  3. D.E.

    tiaurus, исправь код, плиз, раз в комментариях писать нельзя

    Ответить
  4. Михаил

    Здравствуйте. А как добавить адаптивность. Так как я использую видео в Owl Carousel и мне нужно адаптивность. Но когда добавляю ее, то все перестает работать. Как правильно сделать? Спасибо. Очень нужно.

    Ответить
  5. Евгений

    Кто-нибудь смог реализовать автопроигрывание в мобильных браузерах? Не работает autoplay и пользователю приходится 2 раза тыкать.

    Ответить
×
WordPress:
прокачай свой сайт!

Скидка на премиум темы и плагины

Успей забрать скидку ⋙