Как подружить сайты на JavaScript с SEO: SSR, SSG, ISG - что это вообще такое?

Статья в первую очередь под Google, но также подойдет и для Яндекса, и для Bing

Ранее в статье “Почему Google не видит контент вашего сайта и как это исправить?” мы писали о проблемах доступности контента для Google. Теперь стоит разобрать как же продвигать в поиске сайты на JavaScript-фреймворках React, Angular, Vue, Svelte (и подобных) и не страдать 🙂.

Сергей Горохов
SEO специалист, продвигаю в "бурже" с 2019 года. Развиваю канал о зарубежном SEO.
SEO специалист с 2005 года. Продвигает высоконагруженные сайты в "бурже" в конкурентных тематиках.

Короткий ответ: для продвижения сайтов на JS-фреймворках (например, SPA сайтов) используйте рендеринг на сервере, генерацию статического сайта и их варианты. Без этого никак. А чтобы разобраться что это такое, как работает в самых общих чертах и как составить грамотное ТЗ на SSR / SSG - читайте нашу статью.

В чем проблема с SEO для сайтов на JS-фреймворках?

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

Будет ли подобная страница успешно ранжироваться или даже просто индексироваться? Скорее всего нет.

Но не все так однозначно, ведь алгоритмы и боты Google и Яндекс вроде бы умеют скачивать и обрабатывать JavaScript. Однако на практике они делают это весьма не надежно даже для небольших сайтов. Поэтому если вам нужны результаты по SEO, то не стоит рассчитывать на рендеринг JS на стороне серверов поисковых систем.

Как понять, что вы продвигаете сайт на JavaScript-фреймворке?

Есть несколько вариантов:

  • Самое простое - спросить у разработчиков 🙂.
  • Проанализировать несколько страниц сайта в инструменте Rich Results Test и изучить все ли полезные для SEO блоки с контентом и навигацией есть в HTML коде.
  • Использовать плагин для Chrome Wappalyzer и посмотреть используется ли какой-то JavaScript-фреймворк
<i>На скриншоте видно, что используется фреймворк Vue.js, но также используется Nuxt.js через который уже настроен серверный рендеринг, который дружелюбен к SEO</i>
На скриншоте видно, что используется фреймворк Vue.js, но также используется Nuxt.js через который уже настроен серверный рендеринг, который дружелюбен к SEO

Как подружить сайты на JS-фреймворках с Яндексом и Google?

Для продвижения в поисковых системах сайтов на JS-фреймворках есть ряд решении и все они связаны с термином “рендеринг”.

Рендеринг в нашем случае - процесс генерации HTML страницы. Дополнительно дадим определение термину “фреймворк” - это готовая модель с набором инструментов, которая ускоряет разработку сайта.

<i>Сравнение различных видов рендеринга</i>
Сравнение различных видов рендеринга

1. Server Side Rendering (SSR)

Рендеринг страницы на стороне сервера или Server Side Rendering (SSR) генерирует на сервере готовый HTML файл со всеми блоками, текстами, ссылками, микроразметкой и т.п. Поисковому боту остается только запросить url, дождаться генерации HTML и скачать документ.

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

2. Static Site Generation (SSG)

Пререндеринг / статический рендеринг / статическая генерация - Static Site Generation (SSG) при котором HTML файлы заранее генерируются на сервере и хранятся там же. Поисковому боту не надо даже ждать генерации HTML поскольку можно настроить их кеширование - просто приходи и качай готовые файлы.

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

3. Incremental Static Generation (ISG)

Поэтапная (инкрементная) генерация Incremental Static Generation (ISG) - это вариант статического рендеринга, позволяющий оперативно обновлять контент сайта без пересборки всего сайта.

4. Динамическая отрисовка

Динамическая отрисовка - способ при котором поисковым ботам отдается отрендеренная копия страницы, а пользователю - сайт в исходном виде с JS. То есть для ботов настроен SSR или SSG, а для пользователей - скриптовый сайт SPA / PWA.

Несколько вариантов рендеринга на одном сайте

Разумеется, возможны и комбинированные варианты рендеринга внутри одного сайта. Пример:

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

Что же выбрать для SEO сайта на JavaScript-фреймворке?

<i>Применимость вариантов рендеринга для различных сайтов. Оценка условная и сильно зависят от задач сайтов</i>
Применимость вариантов рендеринга для различных сайтов. Оценка условная и сильно зависят от задач сайтов

Рендеринг страницы на стороне сервера (Server Side Rendering) - подходит для всех видов сайтов, но в первую очередь для больших и динамичных проектов. Этот вид рендеринга существенно повышает нагрузку на сервер, т.к. JavaScript при запросе каждой страницы выполняется не в браузере пользователя, а на сервере.

Статический рендеринг (Static Site Generation) - подходит для небольших сайтов с редко обновляемым контентом. Дело в том, что из-за особенностей технологии нельзя просто взять и добавить новую страницу в статическую копию - необходимо сделать пересборку всего сайта. Тем не менее статический сайт загружается максимально быстро как для ботов , так и для пользователей в браузере. Требования к серверным мощностям - минимальные, можно вообще без собственного аккаунта на сервере.

Поэтапная генерация (Incremental Static Generation) - точно также подходит для небольших сайтов, однако по сравнению со статическим рендерингом позволяет оперативно обновлять контент на сайте без пересборки всего сайта. По скорости загрузки - аналогична статическому рендерингу.

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

<i>SEOспециалист, продвигающий сложный проект с динамической отрисовкой</i>
SEOспециалист, продвигающий сложный проект с динамической отрисовкой

Например, разработка проводит внедрение, оно тестируется, вы его тестируете в инструментах Google и вроде бы все ОК. Однако на практике Googlebot скачивает ее в корявом виде, а через 2 месяца она и вовсе отваливается и вы этого не замечаете, т.к. на клиенте все на месте. В итоги позиции и трафик не растут, а почему - непонятно.

Рендеринг на стороне клиента (Client Side Rendering) - продвигать JS сайт как есть настоятельно не рекомендуется несмотря на заверения Google и Яндекс о том, что они умеют рендерить и индексировать такие страницы.

Минимум о настройке рендеринга для JS-сайта

SEO специалисту необходимо иметь хотя бы общее понимание что такое рендеринг. Далее желательно знать, что для самых популярных фреймворков уже есть фреймворки или технологии для настройки SSR / SSG буквально из коробки.

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

SEO ТЗ на SSR / SSG

Ниже привожу основные пункты, которые желательно включить в ТЗ на дружелюбный к SEO рендеринг:

1. Обоснование задачи: Контент страниц сайта недоступен для ботов поисковых систем. Следовательно невозможно получить стабильный трафик с поисковых систем на эти страницы.

2. Как воспроизводится проблема: Прикрепляем скриншот и выгруженный код страницы из инструмента https://search.google.com/test/rich-results

3. Что необходимо сделать: Внедрить SSR / SSG или их варианты, но не динамическую отрисовку. Рекомендуется использовать фреймворк (указать фреймоворк), а не кастомное решение.

4. Указать общие требования: Стат копия должна быть доступна для ботов поисковых систем и обновляться после внесения изменений в контент сайта. URL страниц статической копии, контент, навигационные элементы сайта и исходного приложения должны совпадать.

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

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

  • Title и meta description
  • Link canonical и meta robots (если они уже настроены)
  • Микроразметка OG: и Schema.org
  • Меню, футер и прочие блоки перелинковки или навигации (указать какие именно!)
  • h1…h4 заголовки страниц
  • И т.п.

Для каждого вида страниц нужен свой перечень.

Проверка работы SSR / SSG в Google

Обязательно проверьте каждый вид страниц (главная, каталог, статья и т.п.) хотя бы в https://search.google.com/test/rich-results и посмотрите HTML код, который отдается ботам поисковых систем.

О том, как проверять видит ли Google контент вашего сайта, смотрите в предыдущей статье.

Настройка рендеринга страниц JavaScript в Яндекс Вебмастере

После настройки рендеринга на сервере в Яндекс Вебмастере в инструменте "Рендеринг страниц JavaScript (β)" принудительно отключаем рендеринг JS, чтобы поисковый бот не путался. Ссылка на справку по инструменту, но вообще там все интуитивно понятно.

<i>Проверка страницы сайта в инструменте Яндекс Вебмастера - Рендеринг страниц JavaScript (β)</i>
Проверка страницы сайта в инструменте Яндекс Вебмастера - Рендеринг страниц JavaScript (β)

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

Настройка рендеринга в Bing

Только если вы продвигаетесь за границей

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

Итоги

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

Как видим, SEO процесс для сайтов на JS-фреймворках не прост и требует дополнительных временных затрат. Разумеется, и к квалификации специалиста и его опыту здесь предъявляются повышенные требования.

П.С. Мы надеемся, что информация в статье поможет вам поменьше страдать с JS-сайтами, а то и вовсе продвигать их с удовольствием 🙂.

П.П.С. Обязательно подписывайтесь на мой блог на VC - будут еще статьи по техническому SEO, контенту и линкбилдингу. А также буду рад вам в группе в Телеграм по зарубежному SEO.

8
15 комментариев

Короткий ответ: для продвижения сайтов на JS-фреймворках (например, SPA сайтов) используйте рендеринг на сервере, генерацию статического сайта и их варианты.Далее читать не стала, потому что посыл поддерживаю, а связываться с JS-сайтами в принципе не хочу.
Ибо, как сказал один умный человек, в реализации на JS достаточно допустить одну небольшую ошибку и... Причем сегодня всё работает, а через время кто-то влезает и...
Короче, если вы уверены в своих прогерах на 100%, тогда да.

2
Ответить

Кстати, если разработчики уже внедряли SSR не раз и понимают за SEO, то они едва ли не все за вас делают. Красота. Правда встречается такое исчезающе редко.

3
Ответить

А что делать, если в бурже таких сайтов большинство? Приходится влезать... Но эта проблема как и множество других на пути SEOшника, т.е. их можно так или иначе решить)

Ответить

Почему не связываться? В будущем вся разрабтка будет на JS - это сокращение времени на разработку в десятки раз. Раньше разработчик на свою CMS тратил минимум год и потом всю жизнь допиливал - сейчас на JS фреймворках можно в одиночку развернуть за пол-часа и баги будут правиться совместно с комьюнити. От этого никуда не деться, будущее рано или поздно наступит)

Ответить

Реально еще есть трафик из Bing?
Как оцениваете процент трафика из Bing на ваших проектах?

1
Ответить

В зарубежном Google - да (я именно в этом сегменте продвигаю), смотрю через GA4 и Bing Webmaster. Но в среднем у Bing 1-3%, так что под него есть смысл заморачиваться только хотя бы от 10К органики в сутки. Только если под US продвигаете, то есть смысл прям со старта им заниматься.

Ответить

Павел материалы по Python больше не планирует публиковать? Здесь не пишет, канал в ТГ забросил.

Ответить