• Товары с Алиэкспресс
  • Игрушки для мальчиков
  • Одежда
  • Игрушки ребенку
  • Ноутбуки
  • Новости
  • 5️ Методы ленивой загрузки содержимого сайта для лучшего 📈 SEO и пользовательского опыта

    1. Сценарии содержимого с отложенной загрузкой
    2. Средства массовой информации
    3. Код
    4. копия
    5. Обработка ленивых загруженных изображений
    6. Что такое IntersectionObserver?
    7. Пагинация / Непрерывная прокрутка
    8. Использование History API
    9. Загрузка скриптов по мере необходимости
    10. Завершение
    Ленивая загрузка ресурсов сайта для лучшего пользовательского опыта

    Скорость сайта является ключевым аспектом на странице SEO каждый может контролировать. Ваша цель - быть в курсе менее чем за 3 секунды, даже на обычном телефоне через соединение 3G.

    Однако большинство веб-сайтов имеют так много запросов и большие полезные нагрузки, что ограничение по времени или бюджет не могут быть достигнуты. Фактически, согласно исследованию Google, средняя загрузка веб-страницы занимает 22 секунды.

    Но что, если я скажу вам, что есть способ разгрузить или даже избежать загрузки ресурсов страницы, пока они не понадобятся?

    Это может дать вашему веб-сайту явное преимущество перед вашими конкурентами, потому что Google не только понравится вашим страницам, но и посетителям!

    Хорошей новостью является то, что для обновления вашего сайта требуется немного JavaScript и преднамеренных усилий.

    А также Google Search команда все для этой техники , называется «ленивый-загрузки».

    Краткое руководство Google упоминает три основных момента:

    • Загрузить видимый контент
    • Как поддерживать бесконечную прокрутку и нумерацию страниц
    • Как проверить вашу реализацию

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

    Они также опубликовали руководство по использованию Intersection Observer для отложенной загрузки изображений и видео пока они в поле зрения.

    Для средних сайтов, которые делятся контентом, таких как блог или маркетинговый сайт, ленивая загрузка довольно проста. Но для веб-приложений это может быть более сложным, и я углублюсь в некоторые методы, которые я использую для загрузки кода по мере необходимости, чтобы убедиться, что мои приложения работают быстро и быстро.

    Я рассмотрю пункты, которые предлагает Google, и дам несколько советов и примеров из собственного опыта использования IntersectionObserver и немного о том, как работает History API.

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

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

    Сценарии содержимого с отложенной загрузкой

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

    Позвольте мне вернуться к двум основным сценариям веб-сайта: контенту и приложению, потому что потребности в контенте различаются, но частично совпадают.

    Во-первых, сайт, ориентированный на контент или продажи. Для простоты я назову это блогом. Этим сайтам обычно требуются HTML, CSS, JavaScript, изображения и пользовательские шрифты. Они также являются сайтами, для которых вам нужен бесплатный органический трафик от Google, а это значит, что SEO важен.

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

    Контент может ссылаться на носитель, код или копию (текст и разметка).

    Средства массовой информации

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

    Код

    JavaScript, CSS, HTML и шрифты необходимы для отображения страниц. Но скрипты и CSS могут быть вашими самыми большими узкими местами в скором времени для первого взаимодействия. Задержка их загрузки делает ваш контент доступным гораздо раньше.

    копия

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

    Для этого я покажу вам, как использовать IntersectionObserver для загрузки ресурсов, таких как изображения и видео, по мере их просмотра. Но прежде чем сделать это, нам нужно настроить разметку, чтобы сделать изображения и видео индексируемыми.

    Сложные веб-приложения могут быть немного более деликатными, поскольку они опираются на большую логику приложения. Это означает, что им требуется больше файлов JavaScript. Когда эти файлы загружены, имеет значение. Хотя вы можете использовать IntersectionObserver для этого, вашему приложению нужна хорошая техника для динамической загрузки скриптов по мере необходимости. Позже в этой статье я дам вам только это!

    Обработка ленивых загруженных изображений

    Хотя Google и Bing могут выполнять JavaScript вашей страницы, они не делают ее приоритетной. Они также не пытаются прокрутить страницу, чтобы вызвать такие вещи, как IntersectionObserver.

    Это означает, что ваш ленивый загруженный контент также может не существовать.

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

    Секрет того, чтобы сделать ваш контент-паук доступным, заключается в том, чтобы «спрятать» его за тегом noscript.

    <img data-srcset = "img / javascript-медленно-индексировать-статический-лучше-jennifer-slegg-pubcon-2018-869x361.jpg 869w, img / javascript-медленно-индексировать-статически-лучше-jennifer- slegg-pubcon-2018-720x300.jpg 720 Вт, img / javascript-медленно-индексировать-static-лучше-jennifer-slegg-pubcon-2018-460x192.jpg 460 Вт, img / javascript-медленно-индексировать-static- static- better-jennifer-slegg-pubcon-2018-320x133.jpg 320w "src =" img / javascript-медленно-индексировать-статический-лучше-jennifer-slegg-pubcon-2018-869x361.jpg "class =" lazy-image "sizes =" (max-width: 480px) 80vw, 30vw "alt =" javascript-медленно-индексировать-static-лучше-jennifer-slegg-pubcon-2018 "> <noscript> <img src =" img / javascript -slow-to-index-static-better-jennifer-slegg-pubcon-2018-869x361.jpg "alt =" javascript-медленно-индексировать-static-better-jennifer-slegg-pubcon-2018 "> </ noscript >

    Я знаю, что в этом примере много кода, но я перейду к атрибутам «data-» в следующем разделе.

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

    Теперь поисковые пауки будут загружать изображение и индексировать его для вас.

    Тег noscript - это семантический механизм, позволяющий браузеру отображать содержимое внутри элемента только в том случае, если браузер (пользовательский агент) не поддерживает JavaScript. У большинства посетителей будет включен JavaScript, поэтому они не будут запускать изображение для начальной загрузки. Но, как вы вскоре увидите, это произойдет, когда не-текстовое изображение будет видно.

    Теперь давайте рассмотрим, как использовать IntersectionObserver.

    Что такое IntersectionObserver?

    Относительно новый браузерный API, IntersectionObserver поддерживается всеми современными браузерами, и есть стабильный полифиль, который можно динамически загружать для тех, кто этого не делает.

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

    Это простой API, но есть несколько частей, которые вам нужно понять.

    Во-первых, как создать IntersectionObserver:

    var config = {// Если изображение находится в пределах 50 пикселей по оси Y, начните загрузку. rootMargin: '50px 0px', порог: 0,1}; imgObserver = новый IntersectionObserver (showImage, config); imgObserver.observe (yourImage); IntersectionObserver загружает содержимое при входе в область просмотра

    Вы создаете новый объект IntersectionObserver, передавая метод обратного вызова и объект конфигурации. Я расскажу об обратном звонке позже.

    Параметры конфигурации сообщают наблюдателю, насколько близко к видимому окну просмотра должен быть наблюдаемый элемент, прежде чем вызывать метод обратного вызова. Значение rootMargin указывает, сколько может быть отступ по вертикали и горизонтали элемента.

    В моем примере я говорю наблюдателю активировать обратный вызов, когда наблюдаемый элемент находится в пределах 50 вертикальных пикселей от области просмотра. Я установил горизонтальный на 0, так как я редко использую горизонтальную прокрутку.

    Обратный вызов сработает в течение 100 мс, поскольку пороговое значение установлено на 0,1 секунды.

    Я упростил здесь метод «наблюдения», но обычно я выбираю все элементы определенного вида и перебираю результаты. Здесь я просто показываю одно изображение.

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

    Метод обратного вызова - это логика, которая срабатывает при появлении наблюдаемого элемента.

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

    функция showImage (записи, наблюдатель) {для (var i = 0; i <records.length; i ++) {var io = records [i]; if (io.isIntersecting && io.intersectionRatio> 0) {var image = io.target, src = image.getAttribute ("data-src"), srcSet = image.getAttribute ("data-srcset"); if (srcSet) {image.setAttribute ("srcset", srcSet); } if (src) {image.setAttribute ("src", src); } // Остановим просмотр и загрузим изображение наблюдатель.unobserve (io.target); }}}

    Записи аналогичны вашему типичному объекту, основанному на обработчике событий. Чтобы получить доступ к фактическому элементу DOM, вы ссылаетесь на целевое значение записи. Объект также имеет свойства isIntersect и intersectionRatio, которые вы можете использовать, чтобы определить, хотите ли вы воздействовать на элемент или нет.

    В этом примере я «переворачиваю» атрибуты данных на соответствующий им атрибут изображения, что приводит к визуализации изображения. Поскольку я всегда использую адаптивные изображения, мне нужно перевернуть атрибуты data-srcset, data-src и data-sizes.

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

    Если вам интересно, я делаю это со всеми моими изображениями, даже с изображением «выше сгиба». Несмотря на небольшую задержку рендеринга изображений, это не оказывает большого влияния на мой UX. Основной контент загружается очень быстро, особенно на мобильный.

    Изображения загружаются, потому что IntersectionObserver для этих выше элементов сгиба удовлетворяется и немедленно срабатывает. Это не требует прокрутки изображения в поле зрения.

    Говоря о прокрутке в поле зрения, функциональность непрерывной прокрутки также может быть упрощена с помощью IntersectionObserver.

    Пагинация / Непрерывная прокрутка

    Пагинация и непрерывная прокрутка

    Некоторое интересное руководство от Google, которое привлекло мое внимание в последнее время, - как обращаться со списками подкачки и с непрерывной прокруткой.

    Во-первых, непрерывная прокрутка.

    В последние пару лет это стало обычной тактикой на новостных сайтах. Здесь вы прокручиваете статью вниз и, когда вы достигаете дна, отображается новая статья. Эта техника действительно родилась из социальных сетей, таких как Twitter и Facebook, позволяя пролистывать пост за постом до тех пор, пока вы не встанете после сна.

    Вы можете использовать IntersectionObserver для просмотра элемента, может быть, последний или два абзаца, чтобы узнать, когда читатель заканчивает статью. Когда эти нижние элементы прокручиваются, вы можете использовать fetch, чтобы получить следующую статью и добавить ее под текущей статьей. Вы также захотите использовать API истории, о котором я вскоре расскажу, для обновления URL.

    Другой сценарий - индексы списков, например, как я настраиваю страницы индекса моего блога. На каждой странице отображается около 20 карточек или записей в блоге. Внизу есть стандартный раздел «нумерация страниц» со ссылками на предыдущие и следующие страницы по номерам.

    В сценарии непрерывной прокрутки Google не будет запускать следующую статью. Так что просто знайте об этом.

    Вместо этого вы можете перечислить похожие статьи, как я делаю на этом сайте, под статьей. Если вы действительно хотите использовать непрерывную прокрутку, вы можете скрыть соответствующие статьи за элементом noscript, используя технику, описанную выше.

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

    Использование History API

    У API History и у меня нет большой истории, хорошо, это немного по-доброму, но это правда. Лично я не использовал этот API, потому что мой первоначальный опыт работы с этим API, почти 7 лет назад, был ужасным.

    В последнее время я снова обдумывал это, поскольку Google рекомендовал это в нескольких недавних руководящих статьях. И я должен признать, что во второй раз он чувствует себя «лучше» и полезнее.

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

    Я упомянул об использовании его в разделе непрерывной прокрутки, потому что Google рекомендует использовать его в этом сценарии. Но если вы работаете с одностраничными приложениями, вам также следует использовать этот API.

    => Вставить адресную строку

    Основное преимущество, которое он предоставляет, - это возможность изменять URL-адрес в адресной строке, не вызывая серверный запрос, который вызывает полную перезагрузку страницы. Он работает так же, как метод фрагментирования хэша, но использует общий URL-адрес.

    var stateObj = {foo: "bar"}; history.pushState (stateObj, "страница 2", "bar.html");

    В примере кода вы можете увидеть историю, что метод pushState имеет три параметра: состояние, имя и URL. Для наших целей вы можете передать null первым двум параметрам, URL является важным значением.

    Изменение здесь URL приводит к изменению URL в адресной строке, но, как я уже говорил, запрос к серверу не будет. В сценарии с непрерывной прокруткой вы выполняете AJAX-вызов в фоновом режиме и вставляете полученный HTML-код в DOM, чуть ниже текущей статьи или элемента. После изменения URL-адреса пользователь увидит реальный URL-адрес новой статьи, и если он предоставит общий URL-адрес, это будет прямая ссылка на страницу статьи.

    Просто убедитесь, что URL, который вы передаете методу pushState, является реальной ссылкой на новую статью!

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

    Google действительно подталкивает вас к использованию реального URL, но URL, управляемого JavaScript. В сценарии непрерывной прокрутки, когда срабатывает IntersectionObserver, вы можете загрузить новую статью и динамически изменить URL. Теперь пользователь увидит URL новой статьи и сможет перезагрузить страницу.

    Теперь ваши URL-адреса синхронизированы, и Google будет видеть прямой URL-адрес при поиске ссылок и т. Д.

    Загрузка скриптов по мере необходимости

    Если вы знаете меня, вы знаете, я рекомендую использовать как можно меньше JavaScript. Для таких сайтов, как этот, я часто сжимаю 15 КБ или меньше после сжатия. Но веб-приложения могут взорвать это быстро.

    Так как же избежать чрезмерного JavaScript, чтобы взорвать ваш пользовательский опыт?

    Во-первых, используйте только то, что вам действительно нужно. Например, Netflix сократил свое среднее время рендеринга на 50% после устранения React из их внешнего интерфейса и ограничения его рендерингом на стороне сервера (SSR).

    Но как насчет тех времен, когда вам нужна библиотека, чтобы стимулировать ваши приложения?

    Загружайте их, когда они нужны и только тогда, когда они нужны.

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

    Кто не хочет эти KPI?

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

    Вот сценарий, и нет, я не создавал его, команда Chrome первоначально поделилась им:

    try {var scripts = [{{{scripts}}}], src, pendingScripts = [], firstScript = document.scripts [0]; // polyfil проверяет и загружает здесь if (typeof IntersectionObserver === "undefined" || IntersectionObserver.toString (). indexOf ("[native code]") === -1) {scripts.unshift ("js / libs / polyfil / пересечение-observer.js "); } // Наблюдаем за загрузкой скриптов в IE function stateChange () {// Выполняем столько скриптов по порядку, сколько мы можем изменить pendingScript; while (pendingScripts [0] && pendingScripts [0] .readyState == 'загружен') {pendingScript = pendingScripts.shift (); // избежать будущих событий загрузки из этого скрипта (например, если src изменится) pendingScript.onreadystatechange = null; // не могу просто добавить appendChild, старая ошибка IE, если элемент не закрыт firstScript.parentNode.insertBefore (pendingScript, firstScript); } console.log («скрипты должны быть загружены сейчас»); } // перебираем URL нашего скрипта while (src = scripts.shift ()) {if ('async' в firstScript) {// современные браузеры script = document.createElement ('script'); script.async = true; script.src = src; document.body.appendChild (сценарий); } else if (firstScript.readyState) {// IE <10 // создайте скрипт и добавьте его в нашу кучу script = document.createElement ('script'); pendingScripts.push (сценарий); // прослушивать изменения состояния script.onreadystatechange = stateChange; // необходимо установить src ПОСЛЕ добавления слушателя onreadystatechange // иначе мы пропустим загруженное событие для кэшированных скриптов script.src = src; } else {// возвращаемся к отсрочке document.write ('<script src = "' + src + '" defer> </' + 'script>'); }}} catch (error) {alert (error); }

    Я сократил его до того, как загружать полифайл IntersectionObserver, так как я рассмотрел его в этой статье. Но хитрость заключается в том, чтобы создать массив скриптов, которые вы хотите загрузить с каждым в разумном порядке для управления зависимостями.

    Примечание: скрипт использует Обозначение усов отсюда поле {{{script}}} вверху скрипта для вставки ссылок на зависимости скрипта страницы.

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

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

    Я использую эту технику для загрузки полифайлов, если и когда они необходимы. Но вы можете использовать эту технику для загрузки скриптов, как того требуют действия пользователя. Вместо полифила, возможно, вашему приложению нужна библиотека, но не до тех пор, пока не будет выполнен определенный критерий или не будет выполнено действие пользователя.

    Теперь вместо того, чтобы откладывать время до первого взаимодействия на 1-5 секунд (или более), вы можете разгрузить эту производительность и UX, пока она не понадобится. Или, может быть, вы используете это для загрузки сценариев, когда поток пользовательского интерфейса находится в режиме ожидания (пользователь ничего не делает активно), чтобы он не мешал работе пользователя.

    Завершение

    Существует множество причин, по которым лениво загружаемый контент страницы помогает вам улучшить взаимодействие с пользователем. Основное преимущество - более быстрое время взаимодействия или улучшенная скорость страницы. Но правильное управление отложенной загрузкой может дать вам преимущества SEO и UX.

    Что-то, что я не освещал в этой статье, это то, что вы также можете сделать свой динамический контент более доступным для людей с ограниченными возможностями, используя программы чтения с экрана.

    Google вознаградит более быстрые веб-страницы лучшим рейтингом, но только если их пауки смогут получить доступ к ленивому контенту. Для этого вам нужно правильно кодировать свои страницы, чтобы сделать ленивый контент доступным, даже если JavaScript не включен, что является случаем по умолчанию для поисковых систем.

    Intersection Observer и History API можно использовать для управления загрузкой контента и ресурсов по мере необходимости, не нарушая пользовательский опыт. Эти инструменты могут добавить сложности вашему сайту, и вы должны проверить или убедиться, что эти изменения не нарушают пользовательский опыт.

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

    Почему на алиэкспресс все дешево, можно ли покупать у них?
    6 Январь 2016       darwin             Просмотров:   2816 Хотел бы ответить на вопрос который мне поступил на почту, мол почему на алиэкспресс

    ТОП-5 лучших умных часов с Алиэкспресс
    Умные часы сравнительно недавно оказались на прилавках магазинов, тем не менее, стремительно набирают популярность среди взрослых и детей. Это и не удивительно, ведь этот аксессуар не только красиво смотрится

    Как заработать на Алиэкспресс: основные методы
    Казалось бы, крупные торговые площадки в Интернете — это места, предназначенные для траты денег. Но на самом деле есть простые и надёжные методы, как заработать на Алиэкспресс. И воспользоваться ими могут

    Что делать если на алиэкспресс магазин перестал существовать
    Статьи Опубликовано: 18.10.2017 КАРТПЛОТТЕР (эхолот) за 25$!!! СОЗДАЮЩИЙ КАРТЫ глубин в реальном времени. Все чаще мне задают вопросы в стиле “Заказал товар, оплатил, позже зашел на страницу продавца,

    Детский размер США на русский на Алиэкспресс
    Многие из нас активно пользуются этой площадкой, и это не удивительно: здесь всегда можно найти что-то интересное по сходной цене. Детский размер США на русский на Али экспресс, таблицы сравнения – довольно

    Rock Zircon Nano - обзор наушников с АлиЭкспресс, где можно купить
    Недавно у меня сломались мои любимые наушники, и я начал подумывать о покупке новой модели. Наушники Rock Muma прослужили мне верой и правдой около двух лет, и я решил заказать их младшего брата — Rock

    Размер обуви на Алиэкспресс
    Многие считают, что приобретение обуви на торговой площадке – плохая идея, ведь велика вероятность того, что придет вовсе не тот размер, который мы заказывали. Но знаете ли вы, что в большинстве случаев

    Алиэкспресс шубы
    Всем привет. С наступлением осени меня все чаще стали спрашивать про покупку шубы с алиэкспресс, стоит оно того или нет. Поискав информацию в интернете, я кроме как  точно таких же вопросов, ничего

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

    Доставка с Алиэкспресс курьером: платная или нет?
    В данной статье мы поговорим, платная ли доставка курьером на Алиэкспресс . Курьерская доставка с Алиэкспресс нравится многим покупателям, ведь не придётся идти на почту с извещением, стоять в очереди

     

    Карта