Влияние javascript на продвижение сайта

Анатолий Кузнецов
Анатолий Кузнецов
SEO-оптимизатор с 20-летним стажем. Автор блога hozyindachi.ru о продвижении и доработке сайтов.

Влияние javascript на продвижение сайта

Сайт красивый, быстрый, современный — а в поиске его нет. Открываешь исходный код страницы, а там пустой контейнер и подключённый скрипт: весь текст, каталог, цены и меню появляются только после того, как браузер выполнит JavaScript. Я в SEO с 2005 года и с такими проектами сталкиваюсь регулярно, особенно после переезда на модный фронтенд-фреймворк. Разберу, как поисковые роботы на самом деле работают со скриптами, почему индексация задерживается, что проверять и как сделать контент видимым без переписывания всего проекта.

Как робот обрабатывает страницу: две стадии вместо одной

Упрощённое представление «робот зашёл и всё увидел» неверно для сайтов на скриптах. Обработка разбита минимум на две стадии.

Сначала работает обход: робот скачивает HTML-документ по адресу, разбирает его как текст, достаёт ссылки и содержимое, которое там уже есть. Если в документе только контейнер и подключение скрипта, на этой стадии робот не видит почти ничего.

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

Разница между стадиями — не техническая деталь, а источник почти всех проблем. Ресурсы на рендеринг ограничены, очередь общая на весь интернет, и попадание в неё не мгновенное.

Стадия Что происходит Что видит робот
Обход Загрузка исходного документа Только то, что есть в HTML сразу
Очередь рендеринга Ожидание свободных ресурсов Ничего, страница ждёт
Рендеринг Выполнение скриптов и запросов данных Итоговое содержимое, если скрипты отработали
Индексирование Разбор итогового документа Текст, ссылки, разметка после рендеринга

Почему это тормозит индексацию

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

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

Отдельно про поисковые системы вообще: разные роботы обрабатывают скрипты по-разному и с разной полнотой. Часть систем и сервисов — включая ботов социальных сетей и мессенджеров, которые собирают превью ссылок, — скрипты не выполняют вовсе. Рассчитывать, что «все всё отрендерят», не стоит.

Что именно ломается чаще всего

Что реализовано на скриптах Последствие
Основной текст страницы Страница считается пустой или тонкой
Меню и внутренние ссылки Разделы не обходятся, вес не передаётся
Пагинация каталога Индексируется только первая страница списка
Заголовок и описание страницы В выдаче показывается шаблонный текст со всех страниц
Цены, наличие, характеристики Данные не попадают в товарную разметку
Хлебные крошки и разметка Расширенные сниппеты не формируются
Подгрузка по прокрутке Часть каталога недоступна роботу в принципе
Смена адреса без перезагрузки Разное содержимое по одному адресу

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

Ещё один частый случай — контент, который появляется только после действия пользователя: клика по вкладке, нажатия «показать полностью», прокрутки до блока. Робот таких действий не совершает. Всё, что спрятано за взаимодействием и не присутствует в документе, для поиска не существует.

Практический разбор: как проверить свой сайт за полчаса

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

Шаг первый. Откройте исходный код страницы — именно исходный код, а не панель разработчика с уже собранным деревом элементов. Это разные вещи: панель показывает документ после выполнения скриптов, исходный код — то, что пришло с сервера. Поищите в нём фрагмент вашего основного текста. Не нашли — контент на стадии обхода невидим.

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

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

Шаг четвёртый. Возьмите редкую фразу с проблемной страницы и поищите её в поиске вместе с адресом сайта. Если фраза не находится, а страница в индексе есть — содержимое не дошло.

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

Симптом Что проверить Вероятная причина
Страницы в индексе, но текста в них нет Исходный код документа Контент подгружается скриптом
Индексируется только часть каталога Пагинация и подгрузка по прокрутке Нет ссылок на последующие страницы
Одинаковые заголовки в выдаче Заголовок в исходном коде Заголовок ставится скриптом
Правки долго не подхватываются Дата последнего обхода в вебмастере Задержка очереди рендеринга
Разделы не обходятся Наличие адресов в ссылках меню Навигация без настоящих ссылок
Страница отдаётся сломанной Запреты в robots.txt Заблокированы скрипты и стили

Как сделать контент видимым роботу

Вариантов несколько, и выбор зависит от того, насколько глубоко проект завязан на скриптах.

Подход Суть Кому подходит
Отрисовка на сервере Сервер отдаёт готовый HTML, скрипты добавляют интерактив Оптимальный вариант для нового проекта
Предварительная генерация Страницы собираются заранее и лежат готовыми файлами Каталоги и разделы, которые редко меняются
Отдача готового HTML роботам Промежуточный слой отдаёт заранее отрисованную копию Костыль для действующего проекта без переписывания
Гибридная схема Ключевое содержимое в HTML, второстепенное скриптами Магазины и сервисы с большой интерактивной частью
Полная отрисовка в браузере Весь контент собирается скриптом на стороне клиента Личные кабинеты и закрытые разделы, не нужные в поиске

Практическое правило, которым я пользуюсь при постановке задачи разработчикам: всё, что должно ранжироваться, обязано присутствовать в исходном документе. Тексты, заголовки, метаданные, основные ссылки, разметка товаров, хлебные крошки. Всё, что относится к удобству — фильтры, калькуляторы, галереи, подсказки, — может собираться скриптами сколько угодно.

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

Чего делать не стоит

  • Закрывать служебные каталоги со скриптами и стилями от индексации. Робот должен иметь возможность собрать страницу так же, как её собирает браузер.
  • Делать навигацию на элементах с обработчиками кликов. Ссылка — это адрес в атрибуте, всё остальное для робота не переход.
  • Прятать основной текст за вкладками и кнопками «показать ещё». Держите его в документе, а сворачивайте визуально.
  • Строить каталог только на подгрузке по прокрутке. Нужна параллельная нормальная пагинация ссылками.
  • Отдавать роботу и пользователю разное содержимое. Предварительная отрисовка допустима, подмена смысла — нет.
  • Менять адрес без смены содержимого документа. Каждому значимому состоянию — свой адрес со своим содержанием.
  • Полагаться на тег noscript как на решение. Это заплатка, а не способ доставки основного содержания.
  • Считать проблему решённой после одной проверки. После каждого обновления фронтенда проверку нужно повторять.

Частые вопросы

Правда ли, что поисковики давно научились выполнять скрипты? Научились, но с оговорками: это отдельная стадия, она откладывается во времени и на неё тратятся ограниченные ресурсы. Возможность отрендерить страницу не равна гарантии, что это произойдёт быстро и полностью. Плюс далеко не все системы, читающие ваш сайт, вообще выполняют скрипты.

Насколько велика задержка индексации из-за рендеринга? Она непостоянная и зависит от того, насколько активно робот работает с вашим сайтом, от объёма и от тяжести самих скриптов. На небольших редко обновляемых сайтах задержка может быть значительной. Практический вывод: чем важнее скорость подхвата правок, тем меньше содержимого должно зависеть от скриптов.

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

Как быть с фильтрами в каталоге на скриптах? Разделить сценарии. Комбинации фильтров, под которые есть реальный спрос, должны быть отдельными адресами с обычным содержимым в HTML. Остальные варианты можно оставить работать скриптами и закрыть от индексации, чтобы не плодить бесконечные адреса.

С чего начать, если сайт уже сделан на фреймворке и не индексируется? С инвентаризации: какие типы страниц должны приносить трафик и что из их содержимого отсутствует в исходном коде. Обычно проблемных типов оказывается два-три, и решаются они локальными правками. Такой разбор — стандартная часть технического аудита сайта, и делать его нужно до того, как принимать решение о переписывании проекта.

Чеклист

  • Откройте исходный код ключевых типов страниц и найдите в нём основной текст.
  • Загрузите сайт с отключёнными скриптами: должны остаться тексты, заголовки и навигация.
  • Проверьте, что все ссылки меню и пагинации содержат настоящие адреса.
  • Убедитесь, что заголовки и описания страниц формируются на сервере, а не скриптом.
  • Проверьте, что служебные файлы скриптов и стилей не запрещены в robots.txt.
  • Сравните вид страницы в инструменте проверки вебмастера с тем, что видите вы.
  • Проверьте наличие товарной разметки и хлебных крошек в исходном документе.
  • Проверьте доступность всех страниц каталога без прокрутки и кликов.
  • Убедитесь, что каждому значимому состоянию соответствует свой адрес.
  • Замерьте, за сколько дней подхватываются правки, и сравните до и после изменений.
  • Внесите проверку рендеринга в регламент: повторять после каждого релиза фронтенда.

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

Если нужно SEO-специалист Анатолий Кузнецов — помогу вывести сайт в топ Яндекса и удержать позиции.

Увеличьте позиции и продажи вашего сайта

Профессиональное SEO-продвижение с гарантией результата. Выберите подходящую услугу:

Анатолий Кузнецов — SEO-оптимизатор

Остались вопросы по продвижению?

Меня зовут Анатолий Кузнецов, я SEO-оптимизатор с 20-летним стажем. Разберу ваш сайт, отвечу на вопросы и подскажу, что улучшить для роста позиций в Яндексе и Google.

Связаться со мной →

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *

 Нажимая «оставить комментарий» вы принимаетеправила конфиденциальности 

Прокрутить вверх