JavaScript SEO: как убедиться, что Google может индексировать страницы, отрисованные с помощью JS
Google умеет выполнять JavaScript, но рендеринг происходит с задержкой на втором проходе — вот что это значит для индексации и распространённые способы, которыми это ломается.
Индексация происходит в две волны
Googlebot сначала получает ваш исходный HTML и может индексировать всё содержимое, уже присутствующее в этом первоначальном ответе, почти сразу. Всё, что появляется только после выполнения JavaScript, ставится в очередь на второй проход — рендеринг, — который использует отдельные ресурсы и может отставать от первоначального сканирования от нескольких секунд до, на сайте с ограниченным бюджетом сканирования, гораздо дольше. Если ваш контент или внутренние ссылки существуют только после этого второго прохода, вы полагаетесь на более медленный, менее надёжный путь к индексации вообще.
Что на самом деле ломает индексацию
- Основной контент или внутренние ссылки, отображающиеся только после клиентского запроса, без ничего значимого в первоначальном HTML.
- Контент, скрытый за действием пользователя — кликом, прокруткой, наведением, — которое у Googlebot нет причин выполнять.
- JS- или CSS-файлы, заблокированные в robots.txt, которые нужны странице для правильного отображения; см. robots.txt против noindex, чтобы узнать, как блокировка может дать обратный эффект.
- Клиентская маршрутизация, никогда не изменяющая фактический HTTP-статус — неработающий маршрут может отображаться пустым или показывать сообщение «не найдено», продолжая возвращать 200, что проявляется как мягкая ошибка 404.
- Ошибки гидратации или рендеринга, возникающие только в среде безголового браузера и остающиеся незамеченными при обычном ручном тестировании.
Как проверить, что на самом деле видит Google
В инструменте проверки URL Search Console есть представление «Проверенная страница», показывающее отрисованный HTML и скриншот после работы рендерера Google — а не только исходный ответ. Сравните это с исходным HTML: если важный контент или ссылки отсутствуют в исходном ответе, но присутствуют после рендеринга, вы полностью зависите от очереди рендеринга, а не от быстрого первоначального сканирования.
Что действительно помогает
- Отрисовывайте на сервере (или генерируйте статически) контент и навигационные ссылки, важные для SEO, а не загружайте их на стороне клиента после загрузки страницы.
- Используйте настоящие элементы
<a href>для внутренних ссылок, а не обработчики кликов на неякорных элементах — Googlebot переходит по href, а не по произвольным привязкам событий JavaScript. - Не блокируйте JS/CSS-пакеты, от которых зависит рендеринг страницы — Google нужно их получить, чтобы вообще отрисовать страницу.
- Как только страница исправлена, не просто ждите следующего прохода рендеринга — запросите переиндексацию напрямую или отправьте URL через IndexNow, чтобы исправленная версия была подхвачена по вашему расписанию, а не по очереди рендерера.
Хотите, чтобы новая страница была найдена быстрее, чем при обычном органическом сканировании?
IndexLaunch мгновенно отправляет каждый добавленный вами URL напрямую в Bing, Yandex, Seznam и Naver через IndexNow, как только вы ставите его в очередь.
Смотреть тарифы