Skip to content

Front-Back: Основные типы реализации сайтов

В современном веб-разработке сайт может быть реализован различными способами. Основные подходы к реализации веб-сайтов можно разделить на две категории: фронтенд (Front-End) и бэкенд (Back-End). Давайте рассмотрим основные типы реализации сайтов, их принципы работы, плюсы и минусы, а также примеры.

Типы реализации сайтов

  1. Static Site Generation - SSG - Статическая генерация или статические сайты
  2. Server-Side Rendering - SSR - Динамические сайты
  3. Client-Side Rendering - CSR - Клиентский рендеринг
  4. Progressive Web Apps - PWA - Прогрессивные веб-приложения
  5. Server-Side Rendering + SSQ/CSR/SPA/PWA (SSR with CSR/SPA/PWA) - Комбинирует подходы SSR и CSR/SPA/PWA`.
  6. Jamstack - SSQ + API - Смешанный рендеринг

Статическая генерация (SSG — Static Site Generation)

Здесь весь HTML генерируется или создается заранее на этапе сборки проекта, а затем раздается сервером как статические файлы.

Принцип работы:

  • Во время сборки проекта создаются статические HTML-страницы с предзаполненным контентом.
  • Пользователь просто получает готовую страницу без необходимости ожидания генерации.
  • Бэкенд практически отсутствует. Нужен только веб-сервер для раздачи файлов.

Плюсы:

  • Простота в разработке и развертывании.
  • Очень высокая скорость загрузки.
  • Упрощенная работа с хостингом (например, можно размещать на CDN). Низкие затраты на хостинг.
  • Высокая безопасность (нет взаимодействия с сервером на этапе рендеринга).

Минусы:

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

Примеры сайтов:

  • Monogenes.ru и документация.
  • Сайты-визитки. Промо-страницы.
  • Блоги, сгенерированные статическими генераторами сайтов.

Классический серверный рендеринг (SSR — Server-Side Rendering)

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

Принцип работы:

  • Пользователь отправляет запрос к серверу (например, через URL).
  • Сервер обрабатывает запрос, подгружает данные из базы данных и генерирует HTML-страницу.
  • Сгенерированный HTML отправляется обратно на браузер (клиент).
  • Браузер отображает страницу.

Плюсы:

  • Легко индексируется поисковыми системами (SEO).
  • Динамический контент, генерируемый на основе данных.
  • Более сложная функциональность по сравнению со статическими сайтами.

Минусы:

  • Перезагрузка страницы при каждом запросе.
  • Увеличенные задержки из-за полной загрузки страниц при взаимодействии.
  • Более сложная разработка и развертывание.
  • Более высокая нагрузка на сервер (требуется больше ресурсов).
  • Более медленная загрузка страниц по сравнению со статическими сайтами (из-за обработки на сервере).

Примеры сайтов:

  • Большинство традиционных веб-сайтов (новостные порталы, интернет-магазины, форумы).
  • CMS-системы (WordPress, Drupal, Joomla).

Клиентский рендеринг (CSR — Client-Side Rendering)

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

Принцип работы:

  • Пользователь получает HTML-структуру и JavaScript-код генерирующий HTML-страницу.
  • Сервер отдает минимальный HTML-файл и JavaScript-ресурсы (например, SPA-фреймворки: React, Vue, Angular).
  • JS-код загружается, и браузер с помощью него динамически рендерит контент.
  • Дополнительные данные (например, для отображения списка товаров) запрашиваются через API (обычно, REST или GraphQL).

Плюсы:

  • Высокая интерактивность (динамическое обновление данных без перезагрузки страницы).
  • Возможность создания сложных интерфейсов.
  • Меньшая нагрузка на сервер (сервер отдает только данные через API).

Минусы:

  • Зависимость от скорости загрузки JS-файлов.
  • Проблемы с SEO (без дополнительных решений, например, серверного рендеринга).
  • Первая отрисовка может быть медленной (пока загрузятся JS-ресурсы).

Примеры сайтов:

  • Gmail, Google Maps, Trello, Twitter.
  • Многие современные веб-приложения.

Прогрессивное веб-приложение (PWA - Progressive Web Apps)

PWA - это веб-приложения, которые используют современные веб-технологии для обеспечения опыта, похожего на нативные мобильные приложения. Они могут работать в автономном режиме, отправлять push-уведомления и устанавливаться на рабочий стол.

Принцип работы:

  • Пользователь получает HTML-структуру и JavaScript-код генерирующий HTML-страницу.
  • Сервер отдает минимальный HTML-файл и JavaScript-ресурсы (например, SPA-фреймворки: React, Vue, Angular).
  • JS-код загружается, и браузер с помощью него динамически рендерит контент.
  • Бэкенд Аналогичен SPA или Dynamic Website. Предоставляет API для получения данных и может отвечать за push-уведомления.

Плюсы:

  • Работа в автономном режиме.
  • Push-уведомления.
  • Установка на рабочий стол.
  • Быстрая загрузка страниц.
  • SEO-friendly - СЕО-дружелюбные.

Минусы:

  • Сложность разработки.
  • Требуется поддержка браузером Service Workers и других технологий.

Примеры сайтов:

  • Twitter Lite, Spotify, Pinterest.

Комбинирует подходы (SSR + CSR/SPA/PWA)

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

Принцип работы:

  • Пользователь отправляет запрос.
  • Сервер генерирует HTML-код с базовым контентом (SSR) и отправляет его клиенту.
  • После загрузки страницы подключается JavaScript для дальнейшей интерактивности (CSR).

Плюсы:

  • Быстрая начальная загрузка (SSR).
  • Улучшенные SEO-возможности.
  • Высокая интерактивность после загрузки JS.

Минусы:

  • Более сложная реализация.
  • Потенциальные проблемы синхронизации данных между сервером и клиентом.

Пример сайтов:

  • Сайты созданные с помощью Next.js, Nuxt.js, SvelteKit.

Смешанный рендеринг - Jamstack

Архитектурный подход, который объединяет статическую генерацию (SSG), динамические данные через API и клиентский рендеринг.

Принцип работы:

  • Базовый HTML генерируется заранее.
  • Динамические данные подгружаются через API на клиенте.
  • Используются CDN для быстрой загрузки статических файлов.

Плюсы:

  • Быстрая загрузка.
  • Масштабируемость за счет использования CDN.
  • Гибкость благодаря API.

Минусы:

  • Зависимость от сторонних сервисов (например, API).
  • Требует опыта работы с современными технологиями.

Пример сайтов:

  • Monogenes, Gatsby + Netlify, Vercel, Contentful.

Заключение

Выбор подхода зависит от задач проекта. Например:

  • Классический SSR подходит для простых сайтов и блогов.
  • CSR удобен для сложных SPA-приложений.
  • SSG и Jamstack идеальны для статических сайтов с высокой производительностью.
  • Смешанный рендеринг комбинирует преимущества SSR и CSR для проектов, требующих как SEO, так и интерактивности.

Важно учитывать баланс между производительностью, SEO, интерактивностью и сложностью реализации.

Contacts: teffal@mail.ru