Настройка индексации сайта с динамическим обновлением контента

В настоящее время разработчики сайтов все больше концентрируются на удобстве интерфейсов, чтобы ресурс был предельно понятен пользователю. Но технологии, помогающие разрабатывать такие сайты, не всегда «дружат» с поисковиками. Нередко современные площадки или отсутствуют в поиске Google и Yandex, или плохо ранжируются. Особенно это касается сайтов с динамическим обновлением данных. Рассмотрим, в чём трудность их индексации и как справится с этой проблемой.

Динамическая подгрузка данных

ДПД означает, как правило, применение технологии AJAX. Это методика разработки интерактивных интерфейсов, которая строит контакт юзера и веб-сервера по следующим принципам:

  • Юзер кликает на ссылку, кнопку или какой-либо элемент страницы.

  • Выполняется обработка элемента JavaScript’ом, далее запрос отправляется на сервер с целью получить информацию.

  • Сервер возвращает данные, скрипт добавляет сведения на страницу без ее обновления.

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

Альтернативный метод - применение WebSocket, предполагающий обмен информацией между сервером и браузером, который выполняется в режиме реального времени. Технология используется в ресурсах с live-контентом, к примеру, в соцсетях, где диалоги и новостные ленты между юзерами систематически подгружаются без обновления страниц. Но задачи индексации контента с применением WebSocket не возникает. Ниже мы будем рассматривать именно методику AJAX.

Трудности индексации AJAX-контента

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

  • Поисковая машина не замечает контент из-за его отсутствия в HTML-коде. Как следствие, страницы могут не проходить индексирование.

  • Поисковики могут индексировать лишь главную страницу. Такое бывает, если создатели сайта используют символ «#» после имени домена в URL-адресах: http://site.ru/#page-1 или http://site.ru/#page-2.

Решение проблемы

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

  • Если URL-ы ресурса формируются посредством «#», необходимо вместо этого использовать «#!»: http://site.ru/#url → http://site.ru/#!url.

  • Если ЧПУ адресов не имеют хэша, на динамические страницы необходимо добавить мета-тег: <meta name="fragment" content="!">

.

Таким образом, поисковая система делает запрос вариаций страниц с параметром «?_escaped_fragment_=», которые предполагают передачу HTML-снимков страниц со всем сведениями для пользователей, загруженным посредством JavaScript. Для создания HTML-копий страниц обычно прибегают к headless-браузерам со стороны сервера. К примеру, PhantomJS или HtmlUnit.

Когда поисковой машине выдается страница с мета-тегом или с «#!» в URL-адресе , она делает запрос страницы с параметром «?_escaped_fragment_=»:

  • http://site.ru/#!url → http://site.ru/?_escaped_fragment_=url

  • http://site.ru/url → http://site.ru/url?_escaped_fragment_=

В результате она получает HTML-копии всех страниц, добавленные в дальнейшем в индекс. Так, сайт участвует в поиске наряду с другими площадками. В индексе поисковиков при этом сохраняются URL-ы без параметра «?_escaped_fragment_=».

Как поисковые системы индексируют динамический контент

После того, как осенью 2015 года Гугл отозвал рекомендации по AJAX-сканированию ресурсов, с Googlebot сняли ограничения по восприятию файлов CSS и JS. Отрисовка и загрузка контента происходит в том же варианте, как его видят юзеры в браузере. Гугл-индексация ресурсов, применяющих динамически подгружаемые данные, должна происходить исправно, если поисковой машине видны служебные файлы.

Для проверки восприятия сайта поисковой системой Гугл используют сервис SearchConsole. В блоке «Сканирование» выберите «Посмотреть как Googlebot», введите в нужную строку URL страницы и кликните «Получить и отобразить». Далее вы увидите, как Googlebot воспринимает страницу и какие JS- или CSS-элементы ему не открыты.

Раздел «Сканирование»

Раздел «Отображение»

Новые рекомендации Гугл

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

Индексация файлов с параметром «?_escaped_fragment_=» все еще актуальна и для Гугл. Если вы применяете на сайте AJAX для обновления контента, ваш ресурс будет по-прежнему исправно индексироваться в данном поисковике, если машина принимает страницы с «?_escaped_fragment_=».

Применение AJAX для SEO-требований

Динамическая подгрузка информации полезна, когда требуется, наоборот, скрыть некоторые данные. Это предполагают следующие ситуации:

  • Некоторые сведения продублированы на многих страницах ресурса. К примеру, условия оформления заказа и доставки на товарных карточках в онлайн-магазине.

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

  • Скрытие элементы навигации на страницах. Может применяться, к примеру, для распределения статического веса среди страниц ресурса.

Решение таких задач

Для решения безусловно можно применять тег noindex, но он актуален лишь для Yandex, прочие поисковики его не видят. Можно подгружать дублирующуюся информацию динамически. Но нужно решить проблему с Гуглом, так как он исполняет JS-скрипты, следовательно, контент все же индексируется. Для предотвращения этого следует ограничить в файле robots.txt индексацию JS-файла, который отвечает за обновление контента. Это позволяет скрыть необходимые сведения от поисковой машины.

Вывод

AJAX — актуальная технология, дающая возможность улучшать взаимодействие юзера с ресурсом и ускорять обновление контента. Множество SEO-оптимизаторов думают, что наладить отношения сайтов, которые используют AJAX с SEO нельзя. Это не верно. Поисковики постепенно идут к индексированию ресурсов с динамическим контентом самостоятельно, а также предлагают веб-мастерам варианты особых технических настроек, которые позволяют решать вышеуказанные проблемы.