За последние 24 часа нас посетили 18769 программистов и 1678 роботов. Сейчас ищут 1750 программистов ...

поблочная загрузка страници

Тема в разделе "JavaScript и AJAX", создана пользователем Dron-Boy, 25 май 2017.

  1. Dron-Boy

    Dron-Boy Старожил

    С нами с:
    20 ноя 2014
    Сообщения:
    1.041
    Симпатии:
    126
    Есть сайт на нем долго загружается контент. Там много слайдеров + видосы с ютуба. Так вот думаю сделать поблочную загрузку ну типо в каждом блоке крутится гифка загрузится и когда блок полностью загружен показать пользователю. Либо какие у вас идеи? как увеличить скорость? Пробовал оптимизировать css, js, картинки чуток больше стала но не намного.
     
  2. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    есть ссылка на страницу?
     
  3. Dron-Boy

    Dron-Boy Старожил

    С нами с:
    20 ноя 2014
    Сообщения:
    1.041
    Симпатии:
    126
    http://abcpromotion.spb.ru/
     
  4. Алекс8

    Алекс8 Активный пользователь

    С нами с:
    18 май 2017
    Сообщения:
    1.730
    Симпатии:
    359
    у Вас там видео сразу подгружается.. а это не очень хорошо)) вместо видео лучше грузить картинки превьюхи ютубовской.. тогда получится что вместо роликов - будет простая картинка.. а при нажатии на нее - уже подгружать видео..
     
  5. Dron-Boy

    Dron-Boy Старожил

    С нами с:
    20 ноя 2014
    Сообщения:
    1.041
    Симпатии:
    126
    ОК сделаю
     
  6. Алекс8

    Алекс8 Активный пользователь

    С нами с:
    18 май 2017
    Сообщения:
    1.730
    Симпатии:
    359
    Вот модуль вставки ютуб видео для форума на движке SMF https://custom.simplemachines.org/mods/index.php?mod=3268
    в этом модуле как раз реализовано то что я описал... там же есть JS скрипт который при нажатии на статическую картинку отрабатывает загрузку видео. . если препарируете модуль - то это может ускорить процесс)
     
  7. Dron-Boy

    Dron-Boy Старожил

    С нами с:
    20 ноя 2014
    Сообщения:
    1.041
    Симпатии:
    126
    спасибо
    --- Добавлено ---
    Слушай а я что то немогу найти инструкцию по нему. Моды никогда не ставил. МОжешь рассказать что к чему?
     
    Алекс8 нравится это.
  8. Алекс8

    Алекс8 Активный пользователь

    С нами с:
    18 май 2017
    Сообщения:
    1.730
    Симпатии:
    359
    да нет там инструкции... это модуль для форума.. просто препарируешь и все)) дайте мне 5 минут - я просмотрю его - ключевые вещи сюда выложу..
     
  9. Алекс8

    Алекс8 Активный пользователь

    С нами с:
    18 май 2017
    Сообщения:
    1.730
    Симпатии:
    359
    1. Смотрим в моде файл /Source/OharaYTEmbed.php
    в нем есть регулярка, судя по коду с помощью нее мы берем ИД видео.
    PHP:
    1.     $youtube = '~(?<=[\s>\.(;\'"\]]|^)(?<!e\])(?:http|https):\/\/[\w\-_%@:|]?(?:www\.)?(?:m\.)?(?:youtu\.be\/|youtube\.com(?:\/embed\/|\/v\/|\/watch\?v=|\/watch\?.+&v=))([\w-]{11})(?:[^\s|\<|\[]+)?(?=[^\w-]|$)(?![?=&+%\w.-]*(?:[\'"][^<>]*>|<\/a> ))[?=&+%\w.-]*[\/\w\-_\~%@\?;=#}\\\\]?~ix';
    тут похоже парсится сообщение в котором есть ссылка на youtube...
    PHP:
    1.     // Is this a YouTube video url?
    2.  
    3.     $message = preg_replace_callback(
    4.         $youtube,
    5.         function ($matches) {
    6.             return '[youtube]'. $matches[1] .'[/youtube]';
    7.         },
    8.         $message
    9.     );
    в итоге в сообщение всталяется вот вто то такое [youtube]тут_ИД_видео[/youtube]

    2. Дальше смотрим файл ohyoutube.js
    вот тут
    Код (Javascript):
    1. _oh.prototype.getImage = function(youtubeID)
    2. {
    3.     var imgsrc = '',
    4.         index, len,
    5.         imageTypes = ['hqdefault', 'mqdefault', 'sddefault', 'maxresdefault'];
    6.     for (index = 0, len = imageTypes.length; index < len; ++index) {
    7.         imgsrc = '//i.ytimg.com/vi/'+ youtubeID +'/'+ imageTypes[index] +'.jpg';
    8.  
    9.         if (imgsrc.width !=0){
    10.             break;
    11.         }
    12.     }
    13.  
    14.     // Still no image, show the default one
    15.     if (imgsrc.width ==0){
    16.         imgsrc = '//i.ytimg.com/vi/'+ youtubeID +'/default.jpg';
    17.     }
    18.  
    19.     return imgsrc;
    20. };
    у нас строятся ссылки на картинки.. (см. переменную imgsrc)

    вот тут мы слушаем клик по картинки с видео, и при клике открываем видео..
    Код (Javascript):
    1.         _element.one('click', function(){
    2.             var iframe_url = '//www.youtube.com/embed/' + _element.videoID + '?autoplay=1&autohide=1';
    3.  
    4.             if (_element.data('params')){
    5.                 iframe_url+='&'+ _element.data('params');
    6.             }
    7.  
    8.             // The height and width of the iFrame should be the same as parent
    9.             var iframe = $('<iframe/>', {'frameborder': '0', 'src': iframe_url, 'width': _element.imgWidth, 'height': _element.imgHeight, 'allowfullscreen': 'allowfullscreen'});
    10.  
    11.             // Append the YouTube HTML5 Player.
    12.             _element.css({'background-image': 'none'}).append(iframe);
    13.             _element.children('.youtube_play').css({'height': '0'});
    14.         });
    вроде бы так... я не большой спец по JS.. может меня сейчас более опытные коллеги поправят если я не прав..
    исходя из того что вверху написано уже можно сделать отображение картинок вместо роликов и подгрузку роликов при клике по картинке..
    --- Добавлено ---
    на примере
    вот к примеру видео



    это его ИД 3Qtg8bPgEww

    вот так можно взять картинку превью этого видео http://i.ytimg.com/vi/3Qtg8bPgEww/hqdefault.jpg

    а потом уже с помощью onclick подгружать iframe
    Код (Javascript):
    1.             var iframe = $('<iframe/>', {'frameborder': '0', 'src': iframe_url, 'width': _element.imgWidth, 'height': _element.imgHeight, 'allowfullscreen': 'allowfullscreen'});
    --- Добавлено ---
    понятно объяснил?))
     
    Dron-Boy нравится это.
  10. Dron-Boy

    Dron-Boy Старожил

    С нами с:
    20 ноя 2014
    Сообщения:
    1.041
    Симпатии:
    126
    да все понятно
    спрасибо
     
    Алекс8 нравится это.
  11. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    На ютубе же можно получить код с iframe для вставки..
     
  12. Алекс8

    Алекс8 Активный пользователь

    С нами с:
    18 май 2017
    Сообщения:
    1.730
    Симпатии:
    359
    Так в том то и дело что когда на странице много айфреймов ютубовских страница сильно тормозит
     
  13. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Ну дык там параметры есть же. По-твоему эти чудо-плагины работают как-то иначе? :)
     
  14. Dron-Boy

    Dron-Boy Старожил

    С нами с:
    20 ноя 2014
    Сообщения:
    1.041
    Симпатии:
    126
    Алекс8 нравится это.
  15. Алекс8

    Алекс8 Активный пользователь

    С нами с:
    18 май 2017
    Сообщения:
    1.730
    Симпатии:
    359
    отлично)) моментально открывается))
    --- Добавлено ---
    Мы наверно чуть чуть друг друга не понимаем)
    когда копируешь код с ютуба - то это iframe и когда страница открывается - грузится его содержимое.
    а в этом случае - вместо фрейма просто статичная картинка.. а при клике по ней уже грузится содержимое фрейма)) поэтому можно хоть 100 видео так на странице разместить - и не будет тормозов)
     
  16. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    А, ок, вот ты о чем.
     
    Алекс8 нравится это.