Интеграция Contentful Headless CMS: от API до ISR

При разработке крупного сайта на Next.js мы столкнулись с проблемой: контент-менеджеры не могли оперативно обновлять страницы. Каждое изменение требовало пересборки проекта — 15–20 минут простоя. Решение — headless CMS [Contentful](https://en.wikipedia.org/wiki/Contentful). Это облачная платформа с

Разработка и обслуживание любых видов сайтов:

Информационные сайты или веб-приложения
Сайты визитки, landing page, корпоративные сайты, онлайн каталоги, квиз, промо-сайты, блоги, новостные ресурсы, информационные порталы, форумы, агрегаторы
Сайты или веб-приложения электронной коммерции
Интернет-магазины, B2B-порталы, маркетплейсы, онлайн-обменники, кэшбэк-сайты, биржи, дропшиппинг-платформы, парсеры товаров
Веб-приложения для управления бизнес-процессами
CRM-системы, ERP-системы, корпоративные порталы, системы управления производством, парсеры информации
Сайты или веб-приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, конструкторы сайтов, порталы предоставления электронных услуг, видеохостинги, тематические порталы

Это лишь некоторые из технических типов сайтов, с которыми мы работаем, и каждый из них может иметь свои специфические особенности и функциональность, а также быть адаптированным под конкретные потребности и цели клиента

Услуги, которые мы предлагаем
Показано 1 из 1Все 2062 услуг
Интеграция Contentful Headless CMS: от API до ISR
Средний
~3-5 дней

Наши компетенции:

Часто задаваемые вопросы

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1414
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1285
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    980
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1240
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    982
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Разработка веб-сайта для компании ФИКСПЕР
    994

При разработке крупного сайта на Next.js мы столкнулись с проблемой: контент-менеджеры не могли оперативно обновлять страницы. Каждое изменение требовало пересборки проекта — 15–20 минут простоя. Решение — headless CMS Contentful. Это облачная платформа с сильной экосистемой SDK, развитым API и встроенной мультиязычностью. Контент хранится в инфраструктуре Contentful, доступ — через Delivery API (публичный, кешированный) и Management API (запись, приватный). Наш опыт — более 30 внедрений для клиентов разного масштаба, от стартапов до enterprise. Базовый тариф Community бесплатный, а Team — с ростом проекта затраты увеличиваются, но остаются предсказуемыми. Разберём настройку от А до Я за 5 дней. Закажите интеграцию Contentful и ускорьте публикацию контента. Свяжитесь с нами для обсуждения вашего проекта.

Какие проблемы решает интеграция Contentful

N+1 запросы при получении связанных сущностей. Стандартный REST API не позволяет выбирать глубину подгрузки. Contentful решает это параметром include — за один запрос можно получить вложенные Entry и Asset. В примере ниже include: 2 загружает автора и обложку для каждой статьи.

import { createClient } from 'contentful'; const client = createClient({ space: process.env.CONTENTFUL_SPACE_ID!, accessToken: process.env.CONTENTFUL_ACCESS_TOKEN!, environment: 'master', }); const response = await client.getEntries<ArticleFields>({ content_type: 'article', 'fields.publishedAt[lte]': new Date().toISOString(), order: ['-fields.publishedAt'], limit: 10, locale: 'ru', include: 2, }); 

Hydration mismatch при SSR. Contentful Rich Text возвращается как JSON AST, а не HTML. Используйте библиотеку @contentful/rich-text-react-renderer для кастомного рендеринга без ошибок гидрации.

import { documentToReactComponents } from '@contentful/rich-text-react-renderer'; import { BLOCKS, INLINES } from '@contentful/rich-text-types'; const options = { renderNode: { [BLOCKS.EMBEDDED_ASSET]: (node) => { const { url, title } = node.data.target.fields.file; return <img src={`https:${url}`} alt={title} />; }, [INLINES.HYPERLINK]: (node, children) => ( <a href={node.data.uri} target="_blank" rel="noopener noreferrer"> {children} </a> ), [BLOCKS.EMBEDDED_ENTRY]: (node) => { const entry = node.data.target; if (entry.sys.contentType.sys.id === 'codeBlock') { return <pre><code>{entry.fields.code}</code></pre>; } }, }, }; 

Сложность локализации. Contentful хранит локализованные поля как словарь {locale: value} в одной записи. Достаточно задать locale: '*' в запросе, чтобы получить все языки сразу. Настройка мультиязычности занимает 2–3 дня и поддерживает до 5 языков в бесплатном тарифе.

Как избежать N+1 запросов при работе с Contentful?

Проблема N+1 возникает, когда для каждой записи делается отдельный запрос на связанные сущности. Contentful решает это через параметр include. Укажите глубину подгрузки — и все связанные Entry и Asset вернутся в одном ответе. В примере выше include: 2 подгружает автора и обложку. Это сокращает количество запросов с 11 до 1, что критично для LCP и TTFB. Наши клиенты отмечают ускорение загрузки страниц до 40%.

Почему Contentful стоит дороже, но выгоднее самописного решения?

Сравним с Directus (self-hosted) и Sanity в таблице:

Критерий Contentful Directus Sanity
Время на запуск 1 день 1–2 дня (развёртывание) 1 день
SDK и инструменты Официальные для всех популярных фреймворков Ограниченный набор Качественные, но меньше
Мультиязычность Встроенная, локализация полей Через расширения Встроенная (GROQ)
Бесплатный порог 25 000 записей, 2 языка Безлимит (самостоятельный хостинг) 100 000 записей, 2 языка

Если бюджет ограничен, Directus или Sanity — хорошая альтернатива. Но для production-проектов с командой Contentful даёт готовые решения для ролей, сред и вебхуков. Экономия времени на поддержку самописного решения составляет до 60%, а средний ROI — 300% за год.

Как настроить Contentful?

  1. Создайте Space в панели управления Contentful.
  2. Определите Content Types: например, статья, автор, категория. Используйте Management API для автоматизации.
  3. Настройте Delivery API и Preview API. Получите токены доступа.
  4. Установите SDK: npm install contentful для Next.js.
  5. Напишите запросы с параметрами include, locale, order.
  6. Настройте Webhooks для ISR: при публикации контента отправляйте POST на /api/revalidate.
  7. Протестируйте все кейсы: публикация, черновики, мультиязычность, ошибки.
Этап Действия Результат
Анализ Определяем модели контента, связи, локализации Структура Content Types в Space
Проектирование Создаём Content Types через Management API или UI Готовые схемы с валидациями
Реализация Настраиваем SDK под вашу платформу (Next.js, Gatsby, React) Работающие запросы к API
Тест Проверяем все кейсы: публикация, черновики, мультиязычность, ошибки Стабильная интеграция
Деплой Настраиваем Webhooks для ISR, CI/CD миграций, Preview Mode Автоматическое обновление контента

Webhooks для ISR (Incremental Static Regeneration)

Space Settings -> Webhooks -> Add Webhook Name: Next.js Revalidation URL: https://example.com/api/revalidate Events: Entry.publish, Entry.unpublish, Asset.publish 
// app/api/revalidate/route.ts export async function POST(req: Request) { const body = await req.json(); const contentType = body.sys?.contentType?.sys?.id; if (contentType === 'article') { await revalidatePath('/blog'); await revalidatePath(`/blog/${body.fields?.slug?.['en-US']}`); } return Response.json({ revalidated: true }); } 

Гарантии стабильной работы при масштабировании

Contentful поддерживает rate limiting (1000 запросов/мин на Community-тарифе), поэтому для высоконагруженных проектов настраивается CDN-кеширование и ISR. Мы используем паттерн BFF (Backend For Frontend) для агрегации данных и минимизации запросов к API. Рекомендуем также добавить fallback-страницы и мониторинг ошибок. Настройка экономит до 40% времени на публикацию контента.

Что входит в работу

  • Проектирование моделей контента (Content Types) с учётом SEO и локализации
  • Готовая интеграция SDK с фреймворком (Next.js, Gatsby, React)
  • Настройка Delivery API, Preview API и Management API
  • Реализация Webhooks для автоматической ревалидации (ISR)
  • Документация по моделям и доступам
  • Обучение команды (1–2 сессии)
  • Поддержка в течение 30 дней после запуска

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