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

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

Три вопроса о карточке товара при выборе SSR, SSG и CSR. Когда видна цена, откуда она обновляется и совпадают ли HTML и DOM.
Для карточки сравните цену в первом ответе и после запуска скриптов. Для руководства проверьте, как новая редакция попадает в опубликованный HTML.

Посмотрите, какой HTML приходит первым

SSR – серверная отрисовка: HTML формируется на сервере для запрашиваемой страницы и отправляется клиенту. В нём могут уже находиться название, описание и ссылки. Однако некоторые части страницы всё равно добавляются или обновляются JavaScript. Серверный ответ также может сохраняться в кэше, поэтому не следует предполагать, что он всегда заново создаётся для каждого посетителя.

SSG – статическая генерация: HTML готовят заранее, например во время сборки, и затем отдают по соответствующему URL. Изменения попадают в этот HTML после предусмотренного процессом обновления: новой сборки, пересоздания страницы или другого механизма конкретной системы. Часть данных может загружаться отдельно после открытия.

CSR – клиентская отрисовка: значимая часть интерфейса создаётся в браузере после загрузки и выполнения JavaScript. Первоначальный HTML может содержать лишь оболочку и ссылки на скрипты, а необходимые товарные данные приходят следующим запросом. Степень наполнения исходного HTML зависит от реализации, поэтому её проверяют, а не выводят из названия фреймворка.

Откройте точный URL напрямую и сохраните тело исходного HTTP-ответа. Найдите в нём контрольные фрагменты: название, основной текст, цену и ссылку на соседнюю страницу, если они должны присутствовать сразу. Затем сравните их с DOM браузера после выполнения скриптов. Различие показывает место появления данных, но не доказывает фактическую индексацию.

Сравните подходы на каталоге и руководстве

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

ПодходИсходный HTMLОбновлениеЗависимостиРискПроверка
SSR для карточкиСервер может включить название, описание и ценуПри формировании ответа с учётом кэша и источника данныхСервер, товарные данные, правила кэшированияУстаревшая цена или ошибка генерацииСверить ответ и DOM после изменения тестовых данных
SSG для руководстваПодготовленный заранее текст и ссылкиПри пересборке или предусмотренном пересозданииСборка, публикация и очистка или обновление кэшаНовая редакция не дошла до посетителяИзменить тестовый фрагмент и проверить опубликованную версию
CSR для интерактивной частиОболочка и ресурсы приложения; состав зависит от реализацииПосле выполнения скрипта и получения данныхJavaScript, сеть, API и состояние клиентаСодержимое не появится при ошибке загрузкиСравнить исходный ответ, DOM и результат проверки Google
Гибридная карточкаОсновной материал подготовлен заранее или серверомЦена и выбранное состояние обновляются по согласованному правилуИсточник товара, сервер или сборка и клиентский кодHTML, видимая цена и данные в других каналах расходятсяПроверить обе стадии и поведение при сбое данных

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

Учитывайте момент появления содержимого

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

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

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

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

Определите обновление, кэш и персонализацию

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

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

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

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

Спроектируйте гибрид по частям страницы

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

Передайте разработчику не только название схемы, но и контракт: какие сведения обязаны быть в первом ответе, откуда берётся цена, когда обновляется кэш и что увидит посетитель при недоступном API. Запишите, какой вариант открывается по прямому URL и как сохраняется выбранный язык. Иначе два решения с одинаковой меткой SSR могут давать разные результаты.

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

Четыре независимые проверки карточки товара. Код HTTP, canonical, цена и адрес ссылки.
Испытайте обычную карточку и адрес отсутствующего товара. Проверьте код ответа, выбранный адрес, видимую цену и ссылки при прямом открытии.

Примите решение по проверяемым сценариям

  1. Выберите руководство, категорию и карточку; для каждой запишите обязательный текст, ссылки, цену и условия обновления.
  2. Откройте адрес напрямую и сравните исходный HTML с DOM после выполнения скриптов. Проверьте, что ссылки имеют работающие адреса и ведут на нужные страницы.
  3. Измените тестовые данные товара или руководства и проследите, когда обновились ответ, видимая страница и связанные данные. Зафиксируйте время и состояние кэша.
  4. Проверьте сбой API или скрипта в тестовой среде, корректный ответ для отсутствующего товара, canonical и указания индексации.
  5. Для предназначенных поиску страниц сопоставьте доступную проверку Google с результатом браузера, а затем отдельно наблюдайте фактическую индексацию. Открытие и отрисовка не гарантируют попадание в поиск.

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

Нужна помощь с вашим проектом?

Оставьте имя и телефон. Свяжусь с вами, чтобы обсудить задачу, объём работ и следующий шаг.

Обсудить проект