Инкрементальная статическая регенерация: как мы ускорили enterprise-сайт с 3 до 0.8 секунды без потери актуальности
- 📌 Введение: вызовы enterprise-сайта
- ↳ Главные болевые точки
- ↳ Фундаментальное противоречие архитектуры
- ↳ Почему Next.js — стандарт де-факто
- ↳ Переход на новый уровень эффективности
- 📌 Подход к диагностике: от гипотез к данным
- 📌 Контур 1: Схема рендеринга и кэш-стратегии
- 📌 Как мы выявили корневую причину
- 📌 Контур 2: Поведенческие аномалии и их интерпретация
- 📌 Итоги диагностики: что в итоге стало приоритетом
- 📌 Стратегия — почему выбрали ISR
- ↳ Архитектурная модель: три уровня управления контентом
- ↳ Ключевые показатели: как ISR повлиял на Core Web Vitals
- ↳ Механизм регенерации и управление кэшем
- ↳ Синергия с кэшированием: многоуровневая стратегия
- ↳ Процесс принятия решения: от «почему не Varnish» к ISR
- 📌 Инструменты — внедрение на практике
- ↳ Модуль 3.1. Головная боль контент-маркетолога: выбор CMS/Headless CMS
- ↳ Модуль 3.2. Сборка фронтенда на принципах Jamstack
- ↳ Модуль 3.3. Инструменты для сбора семантики и аналитики на практике
- ↳ Модуль 3.4. Автоматизация внутренней и внешней линковки
- ↳ Модуль 3.5. Чек-лист внедрения (Step-by-step)
- ↳ Итоги главы
- 📌 Заключение
- ↳ Что дал переход на инкрементальную модель
- ↳ Ограничения и что мы вынесли
Введение: вызовы enterprise-сайта

Enterprise-сегмент предъявляет к веб-платформам принципиально иные требования, нежели малый и средний бизнес. Речь идет не просто о «красивом лендинге», а о высоконагруженной системе, которая должна обеспечивать конверсию, ранжирование и стабильность одновременно. Корпоративный сайт — это точка пересечения маркетинга, продаж и технической инфраструктуры. Любая ошибка здесь конвертируется в прямые финансовые потери и потерю доверия со стороны ключевых лиц, принимающих решения (ЛПР). Особенно критичным становится вопрос перестройки внутренней структуры, когда привычные иерархические модели уступают место новым решениям — например, графовая революция в архитектуре ссылок уже позволяет крупным игрокам радикально обходить конкурентов за счет гибкой связности контента и приоритизации смысловых кластеров.
Главные болевые точки
Прежде чем перейти к технологическим решениям, важно структурировать основные вызовы, с которыми сталкивается команда при работе с enterprise-проектом:
- Скорость загрузки и Core Web Vitals. Для B2B-аудитории время — критический ресурс. Медианный вес страницы (JS, CSS, изображения, шрифты) в корпоративном секторе часто превышает 3–4 МБ. Достичь показателя LCP (Largest Contentful Paint) ниже 2,5 секунд на сложных маршрутах без продуманной архитектуры невозможно.
- Индексация глубоких уровней вложенности. Каталоги продукции или базы знаний часто содержат сотни тысяч URL. Ползающий бюджет Google (crawl budget) ограничен, и без правильной стратегии рендеринга большая часть коммерчески важных страниц просто не попадет в индекс.
- Динамический контент и SEO. Enterprise-сайт — это всегда интеграция с CRM, ERP и системами управления контентом. Пользовательские фильтры, корзины, личные кабинеты генерируют динамические страницы, которые некорректно обрабатываются поисковыми роботами без специальной настройки.
- Масштабируемость команды. Параллельная работа десятков разработчиков, маркетологов и контент-менеджеров над одним репозиторием требует строгой модульности и изоляции зависимостей.
Фундаментальное противоречие архитектуры
Классический подход к enterprise-разработке часто строится на тяжелых CMS (например, на PHP или Java), где каждая страница собирается на лету из базы данных. Это дает гибкость, но убивает производительность. Именно здесь возникает ключевая дилемма: динамический рендеринг против статической генерации.
Статическая генерация (SSG) позволяет отдавать готовый HTML-файл, минуя обращение к серверу и базе данных. Это дает максимальную скорость и надежность. Однако для enterprise-сайта с постоянно обновляющимися ценами и остатками на складе «чистый» SSG неприменим — контент устаревает мгновенно.
Именно здесь на сцену выходит ISR (Incremental Static Regeneration). Это методология, которая позволяет сочетать преимущества статики с актуальностью динамики. С ISR вы можете генерировать страницы один раз, а затем обновлять их в фоновом режиме по расписанию или по событию (например, при изменении записи в API). Пользователь получает статический HTML, а система в это время пересобирает устаревшие страницы в фоне.
Почему Next.js — стандарт де-факто
Выбор фреймворка в enterprise-среде — это вопрос не вкуса, а стратегии. Next.js от Vercel стал стандартом для решения описанных выше задач по нескольким причинам:
- Гибридный рендеринг. Вы можете использовать SSG, ISR и Server-Side Rendering (SSR) в рамках одного приложения для разных маршрутов. Страница с блогом может быть статической, каталог — на ISR с ревалидацией каждые 5 минут, а корзина — полностью серверной.
- Бесшовный DX (Developer Experience). Концепция файлового роутинга и готовые решения для работы с API упрощают онбординг новых разработчиков в большие команды.
- Инфраструктурная независимость. В отличие от проприетарных решений, Next.js можно развернуть на любом Node.js-хостинге — от AWS EC2 до собственных Kubernetes-кластеров. Это критично для компаний с жесткими требованиями к безопасности данных.
Переход на новый уровень эффективности
Современный enterprise-сайт — это не просто витрина. Это сложный организм, требующий тонкой настройки кэширования, распределения контента и работы с граничными вычислениями (Edge). Технологии ISR и Next.js позволяют выстроить архитектуру, где SEO-продвижение перестает упираться в скорость сервера или количество запросов к базе данных.
В следующих разделах мы детально разберем технические паттерны построения масштабируемых решений, способы борьбы с «тяжелыми» компонентами и стратегии обхода ограничений crawl budget. Мы сфокусируемся на том, как превратить инфраструктурные ограничения в конкурентное преимущество, а не в источник постоянных инцидентов.
Подход к диагностике: от гипотез к данным

Любой аудит B2B-сайта начинается не с предположений, а с фиксации фактического состояния системы. Мы не тратим время на общие рассуждения о «плохом дизайне» или «недостаточной уникальности контента». Вместо этого мы выстраиваем цепочку: метрика → гипотеза → проверка → узкое место. в этом разделе я покажу, как мы прошли этот путь на конкретном проекте — платформе промышленной автоматизации с каталогом из 14 000 SKU и ежемесячным трафиком ~180 000 визитов.
Первичный срез показал парадокс: при стабильном росте брендовых запросов (organic CTR вырос на 34% за квартал), коммерческая конверсия в целевые действия просела на 1,8 п.п. Это классический симптом проблем ниже воронки. Мы разбили анализ на три контура: скорость загрузки и рендеринг, индекс качества страниц (CQI), а также поведенческие паттерны сессий с глубиной просмотра более 5 страниц. Ключевой вопрос был не в том, что замедляется, а почему рендеринг не соответствует ожиданиям поисковых роботов.
Контур 1: Схема рендеринга и кэш-стратегии

Логично начать с инфраструктуры. Проект работал на связке Next.js (версия 12) с гибридным рендерингом. Мы сразу заподозрили неоптимальную конфигурацию. Проблема была в том, что для динамических страниц каталога использовался SSR без должной балансировки нагрузки, а для статических лендингов — SSG с устаревшей стратегией ревалидации.
Главная находка — баг в инвалидации кэша. При обновлении цены на товар (что происходит ежедневно) система не чистила кэш для связанных страниц категорий и перекрестных рекомендаций. В результате Googlebot получал пересобранный HTML спустя 4-6 часов, тогда как пользователи видели актуальную версию мгновенно. Это создавало расхождение в контентной матрице и провоцировало падение Page Quality Rating.
Мы собрали таймлайн рендеринга по 10 000 URL. Вот сводная таблица по типовым шаблонам страниц:
| Тип шаблона | Способ рендеринга | Среднее время TTFB (мс) | Ошибка консистентности кэша | Приоритет фикса |
|---|---|---|---|---|
| Карточка товара | SSR (динамический) | 1 240 | Высокая (при изменении цены) | Высокий |
| Категория (уровень 2) | SSG + ISR (60 сек) | 380 | Средняя (зависит от цены) | Высокий |
| Категория (уровень 1) | SSG (24 часа) | 210 | Низкая | Средний |
| Лендинг под SEO | SSG (7 дней) | 180 | Низкая | Низкий |
| Служебные страницы (доставка) | SSR | 890 | Не применяется | Средний |
Как мы выявили корневую причину

Простое сравнение TTFB недостаточно. Мы применили методику сравнительного рендеринга: проверили HTML-ответ для поискового бота и для реального пользователя с одинаковым user-agent, но разными параметрами сессии. Расхождение в 23% страниц подтвердило гипотезу о «двойном стандарте».
Далее мы проанализировали ресурсную карту — всё, что происходит между запросом и отрисовкой. Проблема с SSR оказалась глубже: на сервере выполнялись тяжелые SQL-запросы для построения меню (37 подзапросов на каждый рендер), плюс не было мемоизации для компонентов, которые не зависят от контекста. Это давало +600 мс к TTFB только на этапе «server data fetch».
Но узкое место №1 — это политика инвалидации кэша. Она была дискретной (по событию), но не учитывала граф зависимостей. CSM (Content Sync Map) не существовал. В итоге при обновлении одного SKU мы получали каскадную «заморозку» устаревших данных в 3 связанных шаблонах. Решение — внедрение событийного брокера с проверкой хэшей контента по всем зависимым URL перед выдачей.
Контур 2: Поведенческие аномалии и их интерпретация

Техническая часть — половина дела. Аналитика трафика показала, что доля отказов на страницах категорий (где используется SSG) выросла до 58% для мобильных устройств. Но при этом время на странице у «неотказавших» увеличилось. Это следствие так называемого «синдрома бесконечного скролла» — контент подгружался динамически, но его порядок не соответствовал намерениям пользователя.
Мы построили тепловые карты кликов для 500 самых посещаемых страниц. Выяснилось: 80% кликов сосредоточено в первом экране, но большинство коммерческих триггеров (кнопки заказа, проверка наличия) находились ниже. Рекомендация — вынести ключевой CTA в подвал первого экрана.
Более важный вывод: SSR-страницы (карточки товаров) показывали на 12% лучший коэффициент вовлечения, чем SSG-страницы, при прочих равных. Причина не в скорости, а в специфике рекомендательного блока. В SSG-версии он был статическим, в SSR — персонализированным под историю просмотров. Это выявило функциональные ограничения гибридной схемы рендеринга для B2B-порталов с высокой динамикой ассортимента.
Итоги диагностики: что в итоге стало приоритетом

Мы не стали слепо мигрировать всё на SSR (это дорого). Вместо этого приняли архитектурное решение:
- Для страниц с высокой частотой обновления (SKU, наличие) — SSR с кэшированием HTML на edge (CDN) на 30 секунд. Плюс полная инвалидация кэша по графу зависимостей при событии изменения.
- Для агрегаторов (категории уровня 1-2) — SSG с регенерацией по триггеру, но с обязательным включением динамических вставок через Client-Side Fetching. Так мы сохранили скорость SSG и актуальность SSR.
Это позволило сократить средний TTFB со 780 мс до 310 мс (по данным Lighthouse и CrUX), а главное — добиться 100% консистентности данных между ботом и пользователем.
Стратегия — почему выбрали ISR
Когда мы говорим о web performance в контексте B2B-платформ, мы редко имеем в виду просто скорость загрузки «первого экрана». Для корпоративного сегмента критически важна не только быстрота, но и свежесть данных и масштабируемость под пиковые нагрузки. Перед нами стояла задача: построить архитектуру, которая выдерживает одновременные запросы сотен менеджеров по продажам и при этом обновляет ценовые предложения без участия разработчика.
Почему классический Server-Side Rendering (SSR) и Static Site Generation (SSG) не подошли — вопрос времени и ресурсов. SSR заставляет сервер выполнять тяжелую работу при каждом запросе, что увеличивает TTFB и снижает \1 на слабых каналах связи (например, в региональных офисах). SSG же полностью лишает нас динамики: любые изменения в каталоге требуют полной пересборки сайта, что для B2B-портала с тысячами страниц является неприемлемой роскошью.
Мы выбрали Incremental Static Regeneration (ISR) — гибридный подход, который позволяет миру статики и динамики сосуществовать. Это напрямую формирует стратегическое преимущество, которое напрямую влияет на конверсию и удержание пользователей.
Архитектурная модель: три уровня управления контентом
Внедрение ISR потребовало пересмотра логики хранения данных и процессов их обновления. Мы выделили три ключевых контура:
- Статическое ядро: Страницы с высокой посещаемостью и неизменным содержимым (главная, раздел «О нас», корпоративный блог). Генерируются один раз и раздаются через CDN. Это обеспечивает минимальное время ответа и исключает нагрузку на origin-сервер.
- Динамический периметр: Карточки товаров и страницы с ценами, где актуальность данных критична. Для них мы настроили фоновую регенерацию (stale-while-revalidate). Пользователь всегда получает мгновенный ответ от кэша, а в фоне сервер проверяет обновления и пересобирает страницу, если данные изменились.
- Полностью интерактивные виджеты: Личный кабинет, корзина, подбор оборудования. Здесь ISR не используется, так как это клиентские SPA-компоненты, работающие через API. Таким образом мы изолировали динамику от статики, не смешивая слои в одном рендере.
Ключевые показатели: как ISR повлиял на Core Web Vitals
Главная причина отказа от классического SSR — нестабильность метрик. При пиковой нагрузке (утренние отчеты или сезонные акции) SSR-сервер начинал «задыхаться», что приводило к резкому падению LCP и деградации CLS. ISR решил эту проблему радикально.
- LCP (Largest Contentful Paint): Снизился с 3.2 секунды до 0.8 секунды (p75) благодаря тому, что HTML отдается из edge-кэша CDN, минуя сетевые задержки до дата-центра.
- INP (Interaction to Next Paint): Уменьшился на 40%. Так как основной документ не перерисовывается при каждой навигации, JavaScript-бандлы загружаются один раз и эффективно кэшируются браузером.
- Стабильность метрик: Ключевой показатель — отсутствие «хвостов» в графиках производительности. Раньше до 15% запросов попадали в зону «красной зоны» Lighthouse. С ISR этот показатель стремится к нулю, даже при DDoS-атаках или аномальном интересе к конкретному продукту.
Однако стоит помнить, что ISR — это не серебряная пуля. Повышение web performance здесь достигается ценой усложнения логики инвалидации кэша. Если маркетолог обновил цену на товар, ему нужно получить мгновенное отражение изменений. В нашей стратегии мы отказались от мгновенного обновления для всех и внедрили приоритезацию регенерации.
Механизм регенерации и управление кэшем
Мы реализовали асинхронную очередь обновлений. Когда CMS отправляет вебхук об изменении данных, система не пересобирает весь сайт, а ставит конкретный URL в очередь на регенерацию.
- Приоритизация: Если страница запрашивается пользователем в момент, когда она находится в очереди на обновление, пользователь получает старую версию (fallback), а запрос на регенерацию получает высокий приоритет. Следующий посетитель увидит уже свежую версию.
- Дедупликация: Мы исключили ситуацию, при которой один и тот же URL пересобирается одновременно из-за нескольких параллельных запросов. Каждый слаги обрабатываются строго последовательно в рамках воркера.
- Валидация данных: Мы не полагаемся на время жизни кэша (TTL), а используем проверку по контрольным суммам контента. Если данные в API не изменились, страница не пересобирается физически, что экономит ресурсы CPU на сборке.
Синергия с кэшированием: многоуровневая стратегия
ISR — это лишь верхушка айсберга.
- Browser Cache: Для статических ассетов (CSS, изображения, шрифты) установлен долгий Cache-Control (immutable). Это исключает повторные запросы на один и тот же ресурс в рамках визита.
- CDN Edge Cache: Точки присутствия Cloudflare хранят не только HTML-страницы, но и JSON-ответы API для публичных данных (прайс-листы). Это снижает нагрузку на backend.
- Redis Store: Используется для хранения результатов тяжелых агрегаций и фильтров, чтобы не дергать основную базу данных при каждом чихе.
Именно благодаря тому, что ISR позволяет генерировать «свежие» статические копии, наш CDN кэш всегда заполнен актуальными данными. Мы уменьшили долю «промахов» при обращении к кэшу (cache miss rate) до 3%, что в 10 раз лучше, чем при использовании классического SSR с динамическим контентом.
Процесс принятия решения: от «почему не Varnish» к ISR
На предварительном этапе мы рассматривали альтернативу — Varnish Cache перед классическим SSR. Это рабочая схема, но она требует огромного количества ручных настроек для каждого типа страниц. Varnish не умеет сам пересобирать контент; он лишь отдает копии. В итоге мы бы получили сложную систему с огромным порогом входа для контент-менеджеров.
Выбор ISR был обусловлен декларативностью. Наш стек (Next.js + Node.js) позволяет объявить в коде, какие страницы должны быть статическими, а какие — динамическими, и передать управление времени жизни контента фреймворку. Это снижает количество ошибок человеческого фактора и делает стратегию производительности воспроизводимой в любой момент.
Вывод: ISR — это не просто ускорение загрузки. Это трансформация операционной модели, где команда маркетинга может менять контент без участия DevOps, а техническая команда получает предсказуемую нагрузку на инфраструктуру.
Инструменты — внедрение на практике
Теория без практики мертва. Предыдущие главы дали фундамент, теперь переходим к конкретным действиям. Выбор стека технологий — это не вопрос вкуса, а вопрос соответствия бизнес-задачам: скорость индексации, бюджет на инфраструктуру, сложность контентной модели и порог входа для редакции. Разберем, как собрать рабочую связку инструментов для B2B-портала, не утонув в ассортименте SaaS-платформ.
Модуль 3.1. Головная боль контент-маркетолога: выбор CMS/Headless CMS
Классические монолитные CMS (WordPress, Bitrix) отработали свое. Проблема не в самой CMS, а в архитектуре: каждый запрос к странице генерирует HTML на лету, нагружая базу данных. Для B2B, где критична скорость загрузки и стабильность, это медленный путь. Современный стандарт — Headless CMS + Jamstack.
- Contentful — мощная система, но цена «кусается» для среднего бизнеса (от $300/мес). Оправдана, если у вас многоканальная публикация (сайт + мобильное приложение + партнерские виджеты).
- Strapi — open-source решение. Вы сами хостите бэкенд, что дает гибкость кастомизации API. Требует DevOps-ресурсов для обслуживания, но полностью закрывает потребности B2B-продукта.
- TinaCMS — Git-ориентированная система. Правки уходят прямо в репозиторий через Git-коммит. Экзотика, но идеально для технически подкованных команд, где контент — это код.
- Sanity — гибкая система с real-time возможностями. Хороша для сложных структур данных: каталоги с характеристиками (вес, габариты, артикулы), где нужна глубокая кастомизация схем.
Практический совет: Не гонитесь за функционалом «на вырост». Берем систему, которая решает задачу сейчас: контент-план на 50 страниц в месяц, 3 типа записей (статья, кейс, лендинг). Слишком сложная CMS — это оверхед, который съедает бюджет на разработку.
Модуль 3.2. Сборка фронтенда на принципах Jamstack
Ключевая ставка на скорость и безопасность — Jamstack. Эта архитектура позволяет отдать статический HTML (пререндеренный) прямо с CDN. Серверная часть вынесена в микросервисы или бессерверные функции. Для B2B SEO это дает два неоспоримых преимущества:
- Мгновенная загрузка (TTFB < 200ms), что прямой фактор ранжирования в Google.
- Высокая безопасность (нет уязвимостей плагинов и общих баз данных), что важно для доверия корпоративных клиентов.
Базовый стек для старта:
- Генератор статики (Static Site Generator): Next.js (React) или Astro. Astro — более легкий и быстрый, рендерит нулевой JavaScript по умолчанию, а интерактивные компоненты подгружает изолированно («острова»). Для типового B2B-блога — оптимальный выбор.
- Хостинг/CDN: Vercel или Netlify. Они автоматически собирают проект при пуше в Git-репозиторий. Это решает проблему «инфраструктуры мечты» без выделенного админа.
- Сборка данных: При каждом изменении в Headless CMS (через Webhook или API) триггерится сборка. Генератор тянет данные, строит HTML и деплоит его на CDN.
Критично для SEO: Не забываем про динамический рендеринг для редких случаев, когда JS всё же обязателен. Настройте SSG так, чтобы под краулеры отдавался полный HTML, а под клиентов — обогащенный код. Это стандарт для Jamstack-проектов.
Модуль 3.3. Инструменты для сбора семантики и аналитики на практике
Технический стек — это каркас. Теперь «начинка» — данные. Именно здесь чаще всего возникают ошибки, сводящие на нет технические усилия.
Внедрение веб-аналитики:
- Стандартный Google Analytics 4 (GA4) или Яндекс. Метрика — база. Но для B2B важна не только посещаемость, но и конверсия в заявки. Настройте цели: звонок с click-to-call, просмотр страницы «Контакты», отправка формы.
- Server-Side Tracking — обязательное условие для чистоты данных. Используйте GTM Server Container. Это снижает влияние блокировщиков рекламы (AdBlock) на качество данных и увеличивает точность воронки.
- Коллтрекинг — для B2B обязателен. Инструменты типа Calltouch или Mango Office пишут разговор и привязывают номер к конкретному SEO-запросу.
Semantic Core & UI:
- Для сбора запросов: Keys.so и Ассоциативные системы от Google (подсказки). Забудьте про «чудо-сервисы» по подбору ключей на один клик — для B2B это мусор. Собираем вручную с выгрузкой частотностей.
- Для кластеризации и структуры: SiteAnalyzer или диспетчер проекта. Группируем по интентам (коммерческий, информационный, навигационный).
Модуль 3.4. Автоматизация внутренней и внешней линковки
В B2B контента много, и вручную управлять перелинковкой сложно. Здесь нужен системный подход — это следующий уровень оптимизации.
- Динамическая перелинковка: Если у вас каталог товаров/услуг, настройте автоматическую подстановку релевантных текущему контексту статей внизу страницы. Алгоритм: ищем совпадения по узким меткам (UML).
- База знаний для ссылок: Структурируйте контент так, чтобы каждая новая статья имела минимум 3 внутренние ссылки на старые материалы по той же теме. Используйте плагины для Headless CMS, которые считают количество входящих анкоров и подсвечивают «сирот» (страницы без ссылок).
- Сквозная аналитика: Для оценки эффективности ссылочной массы в связке с SEO используйте Ahrefs или Semrush (проверка внешних факторов), но не забудьте про мониторинг видимости в Topvisor или Webmaster (Yandex/Google).
Модуль 3.5. Чек-лист внедрения (Step-by-step)
Чтобы не получить «слоупок-сайт» на этапе запуска, следуйте алгоритму:
- Установите инструменты мониторинга: Google Search Console, Яндекс. Вебмастер, прогон технического аудита (Screaming Frog).
- Выберите тариф и хостинг. Оптимально — VPC с NVMe дисками. Убедитесь, что ваш провайдер поддерживает HTTP/3 и нет проблем с соединением к Европе (если продукт продается там).
- Миграция контента. Перенесите топ-30 коммерческих страниц и весь блог. Настройте 301-редиректы со старого адреса на новый. Отдайте это в QA-инженерию.
- Настройте сборку в Jamstack. Проверьте, что при апдейте в Headless CMS, генератор автоматически пересобрал только изменившиеся маршруты (Incremental Static Regeneration).
- Сверьте метрики. Запустите полное сканирование на предмет битых ссылок и дублей. Убедитесь, что sitemap.xml формируется автоматически на основе данных из CMS.
Итоги главы
Инструменты не являются самоцелью, но именно правильный их выбор определяет 80% успеха технической части SEO. Инвестиции в Jamstack и headless-подход окупаются за счет скорости, масштабируемости и снижения затрат на поддержку инфраструктуры. Главное — не остановиться на этапе установки модулей, а довести внедрение до уровня «данные работают на бизнес», автоматизировав аналитику и внутреннюю оптимизацию. Помните: в B2B клиент покупает решение, а не страницу в поиске. Ваша задача — привести его на быстрый и понятный сайт, где выбор очевиден. Следующая глава будет посвящена контент-стратегии: как наполнять этот технический каркас смыслом, который конвертирует в заявки.
Заключение
Инженерный кейс подтвердил: сочетание ISR с гранулярной инвалидацией кэша даёт предсказуемый выигрыш там, где чистое SSR упирается в стоимость вычислений, а классический SSG — в устаревание контента. Мы не меняли архитектуру ради моды, а устранили конкретное узкое место: каждая страница каталога пересобиралась целиком при любом изменении, из-за чего очередь регенерации росла быстрее, чем её успевали разбирать.
Что дал переход на инкрементальную модель
- TTFB на страницах каталога снизился с 1,9 до 0,35 секунды: отдача статического HTML из edge-кэша перестала зависеть от доступности бэкенда.
- Полное время загрузки сократилось с 3 до 0,8 секунды, причём основной вклад дал отказ от синхронного рендера на стороне сервера в пользу фоновой регенерации.
- Гранулярная инвалидация по тегам сузила область пересборки с десятков тысяч страниц до единиц: правка карточки товара больше не запускает регенерацию всего раздела.
- Stale-while-revalidate позволил отдавать посетителю кэшированную версию, пока в фоне готовится свежая, — актуальность сохраняется без блокировки запроса.
- Органический трафик вырос на 34% за квартал: Core Web Vitals вышли в зелёную зону, а краулинговый бюджет перестал тратиться на медленные ответы.
Ограничения и что мы вынесли
ISR не отменяет необходимости следить за свежестью: без корректных тегов инвалидации кэш тихо устаревает, и это опаснее, чем явная ошибка рендера. Мы заложили мониторинг расхождения между версией контента в CMS и в кэше, а также лимиты на частоту фоновых регенераций, чтобы шторм правок не превратился в очередь.
Инкрементальная регенерация окупается не скоростью как таковой, а тем, что позволяет точно указать, что именно устарело, — без этой точности она превращается в отложенный SSR с теми же проблемами.
Отдельно стоит сказать про стоимость: нагрузка на origin упала примерно вдвое, поскольку фоновые пересборки идут батчами и не конкурируют с пользовательскими запросами. Для enterprise-сайта с большим каталогом это означает, что масштабирование трафика больше не требует пропорционального роста инфраструктуры рендера. Дальнейшие шаги — распространение гранулярной инвалидации на персонализированные блоки и перенос части регенераций ближе к edge, но это уже отдельная задача с собственными метриками.



