← Назад к вопросам

Приведи пример приложения, в котором использование SSR будет лучшим решением

1.8 Middle🔥 231 комментариев
#Архитектура и паттерны

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI2 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Приложение, где SSR — оптимальное решение

Server-Side Rendering (SSR) — это рендеринг React-компонентов на сервере с отправкой готового HTML клиенту. Рассмотрим, когда это критично.

Реальный пример: Новостной портал (News Aggregator)

Представим приложение типа Habr, Medium или Meduza — платформа для чтения статей.

Почему именно SSR здесь необходимо?

1. SEO — критический фактор

Новостной портал живет за счет органического трафика из Google и Яндекса. Поисковые боты должны видеть:

  • Готовый HTML со всеми метатегами
  • Корректный Open Graph (og:title, og:image, og:description)
  • Правильную структуру заголовков (h1, h2)
  • Полный текст статьи для индексации
// Next.js SSR пример
export async function getServerSideProps({ params }) {
  const article = await fetchArticle(params.id);
  
  return {
    props: {
      article,
      // Для правильного Open Graph
      metadata: {
        title: article.title,
        description: article.excerpt,
        image: article.coverImage,
      }
    },
    revalidate: 60,
  };
}

При SSR Googlebot получит полностью готовый HTML с содержимым статьи, что гарантирует индексацию.

2. Скорость первой загрузки (FCP, LCP)

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

  • Средний читатель остается на странице не более 30 секунд
  • Если контент не загрузится за 2-3 секунды, пользователь уходит
  • SSR гарантирует First Contentful Paint за 300-500ms

3. Social Sharing

Когда вы делитесь статьей в Twitter, Facebook, WhatsApp, эти платформы используют crawler-ботов для парсинга og:image и og:title из мета-тегов. При SSR это работает идеально.

Архитектура SSR приложения

// Next.js (самый популярный SSR фреймворк для React)

// app/articles/[id]/page.tsx
import Article from '@/components/Article';

export async function generateMetadata({ params }) {
  const article = await db.query(
    'SELECT * FROM articles WHERE id = $1',
    [params.id]
  );

  return {
    title: article.title,
    description: article.excerpt,
    openGraph: {
      title: article.title,
      description: article.excerpt,
      images: [{ url: article.coverImage }],
    },
  };
}

export default async function Page({ params }) {
  const article = await fetchArticle(params.id);
  
  return (
    <main>
      <h1>{article.title}</h1>
      <article dangerouslySetInnerHTML={{ __html: article.content }} />
    </main>
  );
}

Гибридный подход: SSR + ISR + CSR

Для максимальной производительности новостной портал использует комбинацию:

// ISR (Incremental Static Regeneration) для популярных статей
export const revalidate = 3600;

// SSR для свежих статей
// CSR для интерактивных компонентов (лайки, комментарии)

export default function Article({ article }) {
  return (
    <>
      <ArticleHeader article={article} />
      <InteractiveComments articleId={article.id} />
      <LikeButton articleId={article.id} />
    </>
  );
}

Конкретные примеры приложений для SSR

  1. Новостные сайты (Habr, Meduza, BBC)

    • Требуют SEO
    • Требуют быструю загрузку для привлечения читателей
  2. E-commerce (Avito, Wildberries, Amazon)

    • Каждая карточка товара — отдельная страница, должна индексироваться
    • Open Graph важна для шеринга в мессенджеры
  3. Документация и Wiki (Docusaurus, MDN)

    • Все страницы должны быть в поиске
    • Быстрая загрузка критична
  4. Блоги (Notion Pages как blog, Medium)

    • Контент должен быть индексирован
    • Social sharing важен

Когда НЕ использовать SSR

  • Внутренние админ-панели (не нужен SEO)
  • SPA-приложения типа Figma, Slack (требуется реал-тайм)
  • Очень простые сайты (лучше Static Generation)

Итого

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

  • Правильную индексацию поиском
  • Быструю первую загрузку
  • Корректное превью при шеринге
  • Лучший SEO ranking
Приведи пример приложения, в котором использование SSR будет лучшим решением | PrepBro