31 мар. 2017 г.

Оптимизируем видео из YouTube и Vimeo на страницах сайта

Рассылка SearchEngines.ru Неправильно отображается?
Посмотреть в браузере.
31 марта

2017 года

СЕГОДНЯ В ВЫПУСКЕ

 

 

Очередной сайт требует подтверждение по смс, а вы не желаете указывать свой реальный номер?

Есть простое, быстрое и удобное решение!

Это сервис SMS-REG.com

Перейти на сайт: разовые смс и аренда виртуальных номеров

Оптимизируем видео из YouTube и Vimeo на страницах сайта

Автор: Николай Мациевский, технический директор облачного сервиса Айри.рф
 

Использование видео становится все более распространенным, а такие сервисы как YouTube, Vimeo и другие предоставляют пользователям возможности для встраивания видео на свои сайты. Хотя это очень удобно, такое встраивание может привести к значительным задержкам в загрузке страницы.

В статье рассказывается о том, каким образом встраиваемое видео замедляет загрузку сайта и как с этим можно бороться. А также будут разобраны плагины к CMS, которые могут помочь в решение этой задачи.

Встраивание YouTube-видео на сайте

Для того чтобы встроить видео из YouTube на страницу своего сайта достаточно всего лишь загрузить видео на YouTube и выбрать «Поделиться». Далее выбираете «HTML-код», и у вас появляется возможность изменить размер встраиваемого видео и задать другие настройки. В итоге вы получаете небольшой кусочек кода, который вам нужно вставить на вашу страницу:

<iframe width="560" height="315" src="https://www.youtube.com/embed/filenamehere" frameborder="0" allowfullscreen class="c large aligncenter"</iframe>

Но внедрение видео через использование этого кода сопряжено проблемой: браузер скачивает при обращении к странице более, чем 500 КБ файлов Javascript. Это происходит в любом случае, даже если пользователь и не взаимодействует с встроенным на страницу проигрывателем видео.

Проблемы с несколькими видео

Что будет, если у вас на странице расположены несколько видео? Совсем не трудно предположить такие сценарии: например, несколько видео на странице с отзывами о компании. Или различные видео-инструкции, показывающие этапы настройки ПО на странице помощи.

YouTube загружает несколько файлов для каждого видео в iframe (осуществляется 8 запросов). Поэтому страницы, где есть несколько встроенных видео, могут загружаться намного медленнее из-за этих http-запросов и соответствующих загрузок файлов.

Отображение статического «баннера» на месте видео с YouTube

Решение было найдено в том, чтобы получить статический «баннер» с YouTube и отображать его вместо встроенного видео. Когда пользователь кликает на кнопку проигрывания видео, начинается показ этого видео.

Это можно сделать с помощью Javascript-кода, указанного ниже:

<script>
          function youTubes_makeDynamic() {
                var $ytIframes = $('iframe[src*="youtube.com"]');
                $ytIframes.each(function (i,e) {
                     var $ytFrame = $(e);
                     var ytKey; var tmp = $ytFrame.attr('src').split(/\//); tmp = tmp[tmp.length - 1]; tmp = tmp.split('?'); ytKey = tmp[0];
                     var $ytLoader = $('<div class="ytLoader">');
                     $ytLoader.append($('<img class="cover" src="https://i.ytimg.com/vi/'+ytKey+'/hqdefault.jpg">'));
                     $ytLoader.append($('<img class="playBtn" src="play_button.png">'));
                     $ytLoader.data('$ytFrame',$ytFrame);
                     $ytFrame.replaceWith($ytLoader);
                     $ytLoader.click(function () {
                          var $ytFrame = $ytLoader.data('$ytFrame');
                          $ytFrame.attr('src',$ytFrame.attr('src')+'?autoplay=1');
                          $ytLoader.replaceWith($ytFrame);
                     });
                });
          };
          $(document).ready(function () {youTubes_makeDynamic()});
     </script>
<script>
                function youTubes_makeDynamic() {
                        var $ytIframes = $('iframe[src*="youtube.com"]');
                        $ytIframes.each(function (i,e) {
                                var $ytFrame = $(e);
                                var ytKey; var tmp = $ytFrame.attr('src').split(/\//); tmp = tmp[tmp.length - 1]; tmp = tmp.split('?'); ytKey = tmp[0];
                                var $ytLoader = $('<div class="ytLoader">');
                                $ytLoader.append($('<img class="cover" src="https://i.ytimg.com/vi/'+ytKey+'/hqdefault.jpg">'));
                                $ytLoader.append($('<img class="playBtn" src="play_button.png">'));
                                $ytLoader.data('$ytFrame',$ytFrame);
                                $ytFrame.replaceWith($ytLoader);
                                $ytLoader.click(function () {
                                        var $ytFrame = $ytLoader.data('$ytFrame');
                                        $ytFrame.attr('src',$ytFrame.attr('src')+'?autoplay=1');
                                        $ytLoader.replaceWith($ytFrame);
                                });
                        });
                };
                $(document).ready(function () {youTubes_makeDynamic()});
</script>

 

Эффект от такого решения оказался очень существенным. Время загрузки страницы сократилось с 17,38 секунд до 3,6 секунд.

Альтернативное внедрение видео YouTube

Стандартный код внедрения видео YouTube не только увеличивает время загрузки страницы за счет скачивания дополнительных файлов и множественных запросов. Габариты видео на странице также внедрены в код, и делают проигрыватель неадаптивным.

Можно внедрить видео на страницу по-другому. Не будем использовать iframe, а воспользуемся тэгом div, не будем указывать размер и разместим iframe на страницу только, если пользователь кликнет на кнопку проигрывания видео.

Поскольку габариты проигрывателя не указаны, он займет по ширине весь родительский контейнер, а высота будет подобрана автоматически. Можно также вставлять несколько таких тэгов div с разными идентификаторами видео, если их нужно разместить на странице несколько.

Далее вставим следующий код в шаблон вашей страницы. Он найдет все такие внедренные тэги и заменит их на миниатюры видео.

<script>
 
    /* Light YouTube Embeds by @labnol */
    /* Web: http://labnol.org/?p=27941 */
 
    document.addEventListener("DOMContentLoaded",
        function() {
            var div, n,
                v = document.getElementsByClassName("youtube-player");
            for (n = 0; n < v.length; n++) {
                div = document.createElement("div");
                div.setAttribute("data-id", v[n].dataset.id);
                div.innerHTML = labnolThumb(v[n].dataset.id);
                div.onclick = labnolIframe;
                v[n].appendChild(div);
            }
        });
 
    function labnolThumb(id) {
        var thumb = '<img src="https://i.ytimg.com/vi/ID/hqdefault.jpg">',
            play = '<div class="play"></div>';
        return thumb.replace("ID", id) + play;
    }
 
    function labnolIframe() {
        var iframe = document.createElement("iframe");
        var embed = "https://www.youtube.com/embed/ID?autoplay=1";
        iframe.setAttribute("src", embed.replace("ID", this.dataset.id));
        iframe.setAttribute("frameborder", "0");
        iframe.setAttribute("allowfullscreen", "1");
        this.parentNode.replaceChild(iframe, this);
    }
 
</script>
<script>
 
    /* Light YouTube Embeds by @labnol */
    /* Web: http://labnol.org/?p=27941 */
 
    document.addEventListener("DOMContentLoaded",
        function() {
            var div, n,
                v = document.getElementsByClassName("youtube-player");
            for (n = 0; n < v.length; n++) {
                div = document.createElement("div");
                div.setAttribute("data-id", v[n].dataset.id);
                div.innerHTML = labnolThumb(v[n].dataset.id);
                div.onclick = labnolIframe;
                v[n].appendChild(div);
            }
        });
 
    function labnolThumb(id) {
        var thumb = '<img src="https://i.ytimg.com/vi/ID/hqdefault.jpg">',
            play = '<div class="play"></div>';
        return thumb.replace("ID", id) + play;
    }
 
    function labnolIframe() {
        var iframe = document.createElement("iframe");
        var embed = "https://www.youtube.com/embed/ID?autoplay=1";
        iframe.setAttribute("src", embed.replace("ID", this.dataset.id));
        iframe.setAttribute("frameborder", "0");
        iframe.setAttribute("allowfullscreen", "1");
        this.parentNode.replaceChild(iframe, this);
    }
 
</script>
 
    .youtube-player img:hover {
        -webkit-filter: brightness(75%);
    }

 

Обратите внимание, что браузеры Chrome и Safari на устройствах iOS и Android разрешают проигрывание HTML5 видео только по действию пользователя. Они блокируют автоматическое проигрывание внедренного видео, чтобы предотвратить скачивание больших объемов по сотовой связи.

Готовые решения для CMS

Выше был рассмотрен возможный вариант решения проблемы, если владелец сайта понимает Javascript в достаточной степени, чтобы применить это решение у себя на сайте.

Это может оказаться не так просто на сайтах с различными популярными CMS, но, как правило, для них существуют отдельные плагины, которые также помогают ускорить страницы с большим количеством видео.

Ниже мы рассмотрим 4 плагина для WordPress, которые позволяют загружать видео из YouTube по принципу lazy-load, то есть, не блокируя отображение остальных элементов страницы.

Плагин Lazy Load for Videos

Этот плагин ускоряет страницы, заменяя встроенное видео на кликабельную картинку с превью этого видео.

Плагин a3 Lazy Load

Плагин позволяет загружать в режиме lazy-load изображения и видео на сайте. Можно также исключить изображения и видео из действия плагина по их имени класса. Плагин совместим с WooCommerce.

Плагин Lazy Load XT

Этот плагин позволяет загружать в режиме lazy-load изображения, видео из YouTube или Vimeo и содержимое iframe-ов. Легкий и быстрый плагин.

Плагин WP YouTube Lyte

Этот плагин вместо полноценных видео внедряет на сайт «легкие» элементы, которые запускают проигрыватель видео, если кликнуть по ним.

В заключение отметим еще раз, что стандартный способ внедрения видео из YouTubе через iframe негативно сказывается на скорости загрузки страницы. Проблема возрастает многократно, если на странице представлены несколько видео.

Для решения этой проблемы можно воспользоваться приведенным решением на Javascript. Если вы используете какую-либо популярную CMS, стоит поискать соответствующие плагины для нее, аналогичные 4-м плагинам для WordPress, которые упомянуты выше.

Яндекс.Вебмастер обновил раздел «Статистика обхода»

Теперь данные в этом разделе обновляются раз в несколько часов, что позволяет отслеживать изменения важных страниц еще до того, как они попали в поиск.

В частности, теперь легко понять, какие новые документы обошел робот и какие из них изменили свой статус. Данные доступны и для выгрузки — в форматах XLS и CSV, а на дашборд вынесен график обхода и список последних страниц, изменивших статус.

Читать новость на сайте

Google подтвердил запуск обновления поискового алгоритма «Fred»

Представитель Google Гэри Илш подтвердил запуск нового обновления поискового алгоритма, которое зарубежные вебмастера прозвали «Fred». Апдейт состоялся 7-8 марта.

Изначально предполагалось, что Google обновил алгоритм по борьбе с некачественными ссылками. Однако дальнейший анализ показал, что от апдейта пострадали в основном сайты с низкокачественным контентом, ориентированные только на получение дохода от AdSense и других рекламных платформ.

Читать новость на сайте

Самое интересное за неделю

Компания Sistrix выяснила, какие сайты пострадали от Google Fred

Результаты анализа показали, что под фильтр попали сайты низкого качества с большим количеством рекламы и контентом, не имеющим ценности для пользователей.
 

Закон о big data даст россиянам контроль над использованием персональных данных

У пользователя появится больше возможностей влиять на судьбу тех данных, которые о нем уже были получены в результате взаимодействия с компаниями.
 

Яндекс.Новости подверглись критике за игнорирование темы антикоррупционных протестов

Необъективность новостного агрегатора объясняется вступившим в силу в начале года законом «О новостных агрегаторах».
 

Бойкот крупнейших рекламодателей обойдется Google в 750 млн долларов

К сумме потерь добавятся еще и расходы в размере $50 млн на оплату работы сотен дополнительных сотрудников, которые должны будут просматривать и отслеживать националистический и экстремистский контент.
 

Почта России начнет доставлять товары с Яндекс.Маркета

Яндекс.Маркет и Почта России запустили совместный проект, в рамках которого планируется доставлять товары покупателям в течение суток. 
 

Сервис Google Optimize стал доступен всем пользователям

Google объявил, что инструмент для A/B-тестирования и персонализации веб-сайтов Optimize вышел из беты. На данный момент он доступен в 180 странах мира.
 

Минкомсвязь хочет обязать абонентов указывать всех возможных пользователей устройств связи

Минкомсвязь хочет обязать абонентов указывать всех возможных пользователей устройств связи. К устройствам связи относятся телефоны, смартфоны, планшеты, ноутбуки с выходом в интернет и мобильные роутеры.
 

Одноклассники тестируют продажу товаров на страницах социальной сети

Администраторы групп, созданных продавцами, могут добавлять на онлайн-витрины как отдельные позиции, так и категории товаров и услуг.
 

Google обновил инструмент для проверки безопасности сайтов

Google обновил инструмент «Безопасный просмотр: статус сайта». Он получил более чистый интерфейс, более понятный язык и более точные результаты.
 

Facebook запускает «Истории» для всех пользователей

В ближайшее время раздел с исчезающими фото и видео появится в мобильных приложениях соцсети для iOS и Android.

Google запустил Rich Cards по всему миру

Google представил новый формат результатов поиска Rich Cards (расширенные карточки) в мае 2016 года. Изначально они были запущены только в США, затем - в англоязычных странах. Теперь доступ к ним получили владельцы сайтов по всему миру.

В поисковой выдаче Rich Cards отображаются в виде карусели карточек с изображениями высокого качества. Как и расширенные сниппеты, они используют семантическую разметку Schema.org.

Читать новость на сайте

Подписаться на Twitter    Подружиться на Facebook    Отправить другу 
Copyright © 2017 Searchengines.ru,, All rights reserved.
Вы получили эту рассылку, поскольку регистрировались на сайте Searchengines.ru. Вы можете всегда отписаться от нее, переслать другу, а также обновить свой профиль подписчика.

Наш почтовый адрес:
Searchengines.ru, , Moscow, 65000, Russia
отписаться от этой рассылки    обновить настройки подписки 

Комментариев нет:

Отправить комментарий

Получите 600 ₽ за рекомендацию

карты Ozon Банка другу  ‌  ‌  ‌  ‌  ‌  ‌ ...