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

Что такое SSG?

1.6 Junior🔥 211 комментариев
#Браузер и сетевые технологии

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

🐱
claude-haiku-4.5PrepBro AI23 мар. 2026 г.(ред.)

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

Что такое SSG (Static Site Generation)?

SSG (Static Site Generation) — это метод построения веб-приложений, при котором HTML страницы генерируются во время сборки (build time), а не при каждом запросе пользователя. Это означает, что вместо динамической генерации страниц на сервере для каждого посетителя, мы заранее создаём готовые HTML файлы и просто отправляем их клиентам.

Как работает SSG

Build Time (во время разработки/развёртывания):
  1. Приложение запускается
  2. Извлекаются данные (из БД, CMS, файлов и т.д.)
  3. Для каждой страницы генерируется HTML файл
  4. Готовые файлы размещаются на сервере

Request Time (когда пользователь открывает страницу):
  Сервер просто отправляет готовый HTML файл (очень быстро)

Различие между SSG, SSR и CSR

SSR (Server-Side Rendering) — страница генерируется на каждый запрос на сервере:

Пользователь запросил страницу
  ↓
Сервер генерирует HTML
  ↓
Отправляет HTML клиенту
  ↓
Браузер рендерит

SSG (Static Site Generation) — страница генерируется один раз при сборке:

Время разработки (один раз)
  ↓
Сервер генерирует HTML для всех страниц
  ↓
Готовые файлы хранятся
  ↓
Пользователи получают готовые HTML (очень быстро)

CSR (Client-Side Rendering) — страница генерируется в браузере клиента:

Пользователь получает пустой HTML + JavaScript
  ↓
Браузер скачивает данные через API
  ↓
JavaScript генерирует HTML в браузере
  ↓
Видно на экране

Преимущества SSG

1. Экстремальная скорость загрузки:

// Просто отправляем файл, никакой обработки
response.sendFile("index.html"); // O(1) операция

2. Минимальные требования к серверу — нужен просто статический хостинг (Vercel, Netlify, S3):

npm run build
# Результат: папка с готовыми HTML файлами
# Её можно залить на любой веб-сервер

3. Высокая безопасность — нет серверного кода, который может быть взломан

4. Легко масштабировать — просто дублируйте статические файлы на CDN

5. SEO дружелюбность — весь контент есть в HTML, боты видят всё сразу

Недостатки SSG

1. Статичные данные — если данные часто меняются, нужно пересобирать сайт

2. Долгое время сборки — если страниц тысячи, сборка может занять минуты

3. Зависит от источника данных — при сборке нужно получить доступ к API или БД

Примеры SSG с Next.js

// pages/posts/[id].js в Next.js
export async function getStaticPaths() {
  // Получаем список всех страниц
  const posts = await fetch(https://api.example.com/posts);
  const data = await posts.json();

  return {
    paths: data.map(post => ({
      params: { id: post.id.toString() }
    })),
    // revalidate: 60 - переделать страницы каждые 60 секунд (ISR)
    revalidate: false // статическая генерация
  };
}

export async function getStaticProps({ params }) {
  // Получаем данные для конкретной страницы
  const post = await fetch(`https://api.example.com/posts/${params.id}`);
  const data = await post.json();

  return {
    props: { post: data },
    revalidate: 86400 // переделать через 24 часа
  };
}

export default function Post({ post }) {
  return (
    <div>
      <h1>{post.title}</h1>
      <p>{post.content}</p>
    </div>
  );
}

ISR (Incremental Static Regeneration)

Идея между SSG и SSR — можно регенерировать отдельные страницы в фоне, пока пользователи видят старую версию:

export async function getStaticProps() {
  return {
    props: { data },
    revalidate: 60 // пересобирать каждые 60 секунд в фоне
  };
}
// Сначала показываем старую версию
// Через 60 сек генерируем новую в фоне
// Новые пользователи видят свежую версию

Когда использовать SSG

  • Блоги — контент добавляется редко
  • Документация — стабильное содержимое
  • E-commerce с категориями — каталог относительно статичен
  • Landing pages — редко меняющиеся страницы
  • Контент-сайты — новости, статьи с фиксированной структурой

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

  • Real-time данные — цены акций, чаты, notifications
  • Персонализированный контент — профили пользователей
  • Много динамических страниц — сборка становится слишком долгой
  • Данные часто меняются — постоянная пересборка неэффективна

Гибридный подход

Можно комбинировать подходы — SSG для главной страницы, CSR для профиля пользователя, ISR для каталога продуктов.

Заключение

SSG — это мощный инструмент для создания быстрых, надёжных и масштабируемых веб-приложений. Хотя не все приложения подходят для SSG, для контент-тяжёлых сайтов это может быть оптимальным решением.

Что такое SSG? | PrepBro