Налаштування Dynamic Rendering для JavaScript-сайтів (Rendertron/Puppeteer)

Якщо контент вашого сайту збирається на стороні браузера, пошукові системи бачать порожню сторінку — і позиції падають. Ми налаштовуємо Dynamic Rendering під ключ: пошуковий робот отримує готову версію сторінки, а відвідувач — попередній інтерфейс. Індексація прискорюється в рази, трафік з пошуку перестає залежати від того, як швидко робот вміє виконувати скрипти.

Розробка та обслуговування будь-яких видів сайтів:

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

Це лише деякі з технічних типів сайтів, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Послуги, які ми пропонуємо
Показано 1 з 1Усі 2062 послуг
Налаштування Dynamic Rendering для JavaScript-сайтів (Rendertron/Puppeteer)
Складний
~3-5 днів
Часті запитання

Чому Dynamic Rendering ламає індексацію JavaScript-сайтів

Класичний збій виглядає так: у логах сервера робот справно забирає HTML-обгортку сторінки, а у видачі вона залишається порожньою — заголовок, тексти, картки товарів і посилання підвантажуються вже в браузері через клієнтський рендеринг.

Робот отримує розмітку без контенту, ставить сторінку в чергу на дообхід і йде ні з чим. Власник бачить просідання позицій за комерційними запитами, падіння трафіку та розділи, що «випали» з індексу, хоча візуально сайт працює бездоганно.

Причина не в тому, що роботи «не вміють» виконувати JavaScript, а в бюджеті обходу. Відрисовка сторінки в headless-браузері коштує на порядок дорожче, ніж читання готового HTML, тому глибина обходу та частота переобходу для таких сторінок падають.

Чим важчий клієнтський бандл і чим пізніше контент з'являється в DOM, тим вищий шанс, що робот зафіксує проміжний стан — скелетон, спінер або порожній контейнер.

Окремий біль — динамічні метатеги та canonical: якщо вони формуються на клієнті, робот може побачити дефолтні значення і склеїти різні сторінки в одну.

Dynamic Rendering задумувався як обхідний шлях: сервер за User-Agent визначає робота і віддає йому заздалегідь відрендерену статичну версію, а людям — звичайний застосунок. Схема робоча, але в неї є ціна.

Предрендер застаріває відносно живого застосунку, кеш потрібно інвалідувати при кожному деплої, а розбіжність між версією, що віддається роботу, і людською версією — це вже підміна контенту, за яку пошукова система знижує довіру до сайту загалом.

Плюс сама по собі ця прошарка не вирішує корінної проблеми: контент усе одно народжується на клієнті.

Саме тому Dynamic Rendering коректно розглядати не як фінальне рішення, а як тимчасову латку на період міграції.

Стійкий результат дає перенесення критичного контенту та метаданих у серверну відповідь — тоді робот отримує готову розмітку з першого запиту, а клієнтський рендеринг залишається лише для інтерактивних блоків. Розбираємо, як це закривається без втрати швидкості та логіки застосунку.

Що дає впровадження: вимірювані ефекти для бізнесу

Швидкість індексації та зростання видимості

Пошуковий робот отримує готову розмітку одразу, без очікування виконання скриптів, — сторінки потрапляють в індекс за години, а не за тижні.

Це напряму розширює видимість: контент, який раніше залишався невидимим для обходу, починає брати участь у видачі, і частка проіндексованих адрес зростає передбачувано, а не «колись».

Зниження навантаження на сервер

Рендеринг виноситься в окремий шар із кешуванням готових сторінок, тому пошукові обходи більше не запускають повний цикл відрисовки на основному застосунку.

Сервер віддає статику з кешу, віддача прискорюється, а пікові обходи перестають конкурувати з реальними користувачами за ресурси.

Усунення класу відмов

Зникає цілий клас збоїв, пов'язаних із невидимим контентом: порожні сторінки в індексі, дублі, втрачені метадані, некоректні канонічні адреси. Робот бачить ту саму версію, що й людина, — розбіжності між розміткою, що віддається, та відрисованою перестають бути джерелом помилок.

Передбачуваність ефекту

Кожна з цих змін вимірювана: терміни потрапляння в індекс, частка проіндексованих адрес, час віддачі, кількість помилок обходу. Ми фіксуємо ці метрики до впровадження і після, щоб ефект було видно в цифрах, а не на словах.

Порівняння підходів: Dynamic Rendering та альтернативи

Вибір між Dynamic Rendering та альтернативами — це не питання «що сучасніше», а питання того, наскільки контент залежить від виконання JavaScript і як часто він змінюється.

Dynamic Rendering віддає пошуковому роботу готовий HTML, відрендерений на льоту, а звичайним відвідувачам — той самий JavaScript-інтерфейс. Це компроміс: він не вимагає переписувати фронтенд, але додає прошарок, який потрібно обслуговувати й кешувати.

Серверний рендеринг (SSR) переносить формування розмітки на сервер — сторінка приходить уже зібраною, без очікування виконання скриптів. Це найпередбачуваніший варіант для пошуку, але він вимагає перебудови архітектури та акуратної роботи зі станом на сервері.

Передрендеринг простіший: сторінки збираються заздалегідь і роздаються як статика — швидко й дешево, але погано переносить контент, що часто змінюється, та персоналізацію.

Гібридні схеми комбінують підходи: статичні розділи віддаються передрендереними, динамічні — через серверний рендеринг або Dynamic Rendering.

Варіант Коли підходить Обмеження
Dynamic Rendering JS-інтерфейс, змінювати фронтенд дорого, контент змінюється помірно Потрібен прошарок рендерингу, кеш і моніторинг; ризик розходження версій для робота й користувача
Серверний рендеринг Важливий стабільний SEO-результат, контент персоналізований Перебудова архітектури, навантаження на сервер, складніше зі станом
Передрендеринг Контент статичний або змінюється рідко, сторінок небагато Погано масштабується на тисячі сторінок і часті оновлення
Гібридна схема Різнорідний контент: частина статична, частина динамічна Складніше в підтримці, потрібна чітка маршрутизація за типами сторінок

На практиці вибір диктує не мода, а профіль контенту та вартість переробки. Якщо фронтенд уже працює на JS і переписувати його немає ресурсу — Dynamic Rendering закриває задачу швидше.

Якщо пошуковий трафік критичний і архітектуру можна змінювати — серверний рендеринг дає стійкіший результат у довгостроковій перспективі. Ми розбираємо ваш випадок і пропонуємо схему під конкретний профіль сторінок, а не універсальний шаблон.

Етапи впровадження Dynamic Rendering під ключ

Впровадження починається з аудиту: знімаємо карту маршрутів, дивимося, які сторінки віддають контент лише після виконання скриптів, а які вже приходять готовими. Паралельно перевіряємо, як пошукові роботи бачать поточну розмітку — де губляться заголовки, метадані та посилання.

На виході отримуємо список шаблонів, для яких рендеринг обов'язковий, і тих, де він лише додасть навантаження.

Далі проєктуємо схему: визначаємо, за якою ознакою розділяти користувачів і роботів, як віддавати передрендерену версію і що робити з уже готовими сторінками. Тут же фіксуємо правила кешування та поведінку при недоступності рендерера, щоб сайт не віддавав порожні відповіді.

  1. Аудит маршрутів і поточної видачі — карта сторінок, список шаблонів під рендеринг, точки втрати контенту.
  2. Проєктування схеми розділення — правила визначення робота, логіка віддачі версій, межі застосування.
  3. Налаштування рендерера — розгортаємо сервіс передрендерингу, підключаємо чергу, задаємо таймаути та ліміти.
  4. Кешування та відмовостійкість — правила зберігання готових версій, поведінка при збої, резервний сценарій віддачі.
  5. Перевірка видачі — звіряємо, що робот отримує повний контент, а користувач — звичайну сторінку; тестуємо крайові маршрути.
  6. Моніторинг і метрики — відстежуємо частку успішних рендерів, час відповіді, зростання проіндексованих сторінок.
  7. Передача та навчання — документація щодо схеми, конфігурації та регламент змін для вашої команди.

Перевірка йде не формально: порівнюємо, що бачить робот і що бачить користувач на одній і тій самій адресі, проганяємо динамічні розділи та сторінки з відкладеним завантаженням. Якщо рендерер віддає неповну розмітку, це ловиться на цьому етапі, а не після переіндексації.

На передачі віддаємо робочу схему, конфігурації, інструкції щодо додавання нових шаблонів і зрозумілий регламент. Ваша команда може підтримувати та розширювати рішення без нас — або ми залишаємося на супроводі.

Що замовник отримує на руки: конфігурації та регламенти

На виході — не «працюючий сайт», а комплект, за яким ваша команда зможе експлуатувати та розвивати рішення без нас.

Усе, що ми налаштовуємо, фіксується в конфігураціях і регламентах: розгортання відтворюється на чистому середовищі, поведінка передбачувана, зміни не ламають видачу.

  • Конфігураційні файли рендерингу: правила маршрутизації запитів, таймаути, ліміти паралельних задач, поведінка при недоступності джерела — з коментарями, що і навіщо змінюється.
  • Схема інфраструктури: як пов'язані веб-сервер, рендерер і кеш, де точки відмови, як масштабується під пікове навантаження.
  • Політики доступу: розмежування прав на конфігурації, секрети та службові ендпоінти, ротація ключів, хто і що може змінювати без погодження.
  • Регламент кешування: час життя сторінок, інвалідація при оновленні контенту, обробка динамічних блоків — щоб пошукові системи отримували актуальну версію.
  • Документація: опис логіки рендерингу, перелік залежностей, інструкція з розгортання з нуля та порядок відкату на попередню версію.
  • Інструкції з експлуатації: типові збої та що робити, як читати логи, які метрики дивитися щодня.
  • Чек-лист приймання: набір перевірок, що підтверджують, що рендеринг віддає коректну розмітку для потрібних типів сторінок.

Комплект передаємо у вашому форматі — репозиторій, вікі або спільний диск. Окремо проводимо передачу знань: інженери проходять по кожному артефакту і відповідають на запитання, щоб підтримка не залежала від однієї людини.

Кейс: як Dynamic Rendering прискорив індексацію в 3 рази

Клієнт — інтернет-магазин на React з каталогом у кілька десятків тисяч карток.

Контент рендерився на клієнті, і пошуковий робот під час обходу бачив порожній каркас сторінки: у видачу потрапляла мала частка каталогу, нові позиції чекали на індексацію тижнями, а частина вже проіндексованих сторінок випадала після чергового релізу.

Відділ маркетингу бачив падіння органічного трафіку, але причина лежала в архітектурі, а не в контенті.

Rendertron ми не стали ставити «в лоб» — спочатку зняли метрики за логами робота та краулінгом. Виявилося, що робот витрачає бюджет обходу на дублі та параметричні URL, а до реальних карток доходить рідко.

Зібрали зв'язку: Dynamic Rendering на Puppeteer з кешем відрендереного HTML, правила віддачі за User-Agent, чистка параметрів через канонічні посилання та карту сайту, окремий прогрів кешу для нових і оновлених карток.

Що змінилося після впровадження

Метрика До Після
Частка проіндексованих карток ~40% ~95%
Середній час до появи в індексі 3–4 тижні 5–7 днів
Позиції за комерційними запитами нижче топ-30 топ-10 за ядром
Частка сторінок з коректним відрендереним HTML ~55% ~99%

Ключовий ефект дав не сам рендеринг, а зв'язка з кешем і прогрівом: робот перестав чекати на відповідь від сервера і отримував готову розмітку миттєво.

Через два місяці після запуску частка проіндексованих сторінок зросла більш ніж удвічі, а нові надходження почали з'являтися у видачі протягом тижня замість місяця.

Окремо налаштували моніторинг: алерти на зростання частки помилок рендерингу, відставання кешу від релізів і падіння покриття індексації. Це дозволило ловити регресії після деплою протягом години, а не за фактом просідання трафіку. Якщо у вас JavaScript-сайт зі схожою картиною — опишіть задачу, повернемося з оцінкою та планом.

Чим Dynamic Rendering відрізняється від серверного рендерингу?

Серверний рендеринг віддає готову розмітку всім одразу: застосунок збирає сторінку на сервері, пошуковий робот і відвідувач отримують одну й ту саму відповідь.

Dynamic Rendering працює інакше — сервер розрізняє, хто прийшов, і для робота віддає заздалегідь відрендерену версію, а для браузера — звичайний клієнтський застосунок. Різниця не в результаті, а в тому, де і для кого виконується рендеринг.

Звідси й різні сценарії вибору. SSR виграє там, де важлива швидкість першої відмальовки для всіх: каталоги, стрічки, сторінки з персоналізацією, контентні сайти з великим трафіком.

Dynamic Rendering беруть, коли застосунок уже працює як клієнтський, а переписувати його під повноцінний серверний рендеринг дорого й ризиковано — інтернет-магазини на важких фронтенд-фреймворках, особисті кабінети, сторінки з відкладеним завантаженням даних.

Комбінування — робочий варіант, а не компроміс. Частину маршрутів можна віддавати через серверний рендеринг, а складні динамічні ділянки закривати передрендером для роботів.

Ключова умова — контент в обох версіях має збігатися: якщо робот бачить одне, а відвідувач інше, це вже підміна, а не оптимізація, і вона призводить до санкцій.

Вибір зрештою впирається в три питання: наскільки критична швидкість віддачі для відвідувача, скільки коштує перевести застосунок на серверний рендеринг і як часто змінюється контент. Якщо сторінки оновлюються рідко, передрендер дешевший і простіший.

Якщо контент живий і персоналізований, серверний рендеринг надійніший у довгу. Ми розбираємо конкретний проєкт і говоримо прямо, який шлях дасть результат без переписування працюючого коду.

Технічні сумніви: запитання та відповіді

Перед стартом замовники зазвичай ставлять одні й ті самі запитання: чи не зламає рендеринг наявний контур, чи не зросте навантаження на сервери, хто і як отримує доступ до сторінок.

Нижче — розбір типових технічних побоювань щодо безпеки, навантаження та сумісності з поточною інфраструктурою.

Чи не віддаємо ми контент пошуковим роботам інакше, ніж людям?

Ні. Рендеринг віддає ту саму розмітку, яку бачить користувач після виконання скриптів, — це вимога пошукових систем, а не наша вільність.

Робот отримує готовий HTML, відвідувач — звичайну сторінку; розходження контенту між ними вважається порушенням і відстежується на етапі приймання.

Чи зросте навантаження на сервери?

Рендеринг запускається лише для запитів пошукових роботів, а не для всього трафіку, тому частка оброблюваних запитів залишається невеликою. Результат кешується, повторні обходи віддають готову копію без повторного запуску браузера. Навантаження знімаємо на окремому вузлі, щоб воно не торкалося основного застосунку.

Чи сумісно це з нашою інфраструктурою та поточним стеком?

Рендеринг ставиться поруч із застосунком і не потребує переписування фронтенду чи зміни хостингу. Працює поверх наявних маршрутів і віддає результат через зворотний проксі.

Якщо застосунок за авторизацією або на закритому контурі, схему доступу узгоджуємо окремо на етапі проєктування.

Як це впливає на безпеку?

Рендеринг ізольований від основної системи: у нього немає доступу до бази та внутрішніх сервісів, лише до публічних сторінок. Запуск відбувається в обмеженому середовищі без зайвих прав, вхідні запити фільтруються за списком пошукових агентів. Витоку даних або обходу авторизації через рендеринг не відбувається.

Що буде, якщо рендеринг недоступний?

Застосунок продовжує працювати як звичайно — рендеринг лише доповнює віддачу сторінок, а не замінює її. У разі збою вузла запити йдуть напряму в застосунок, пошуковий робот отримує попередню відповідь. Відмова рендерингу не валить сайт і не блокує користувачів.

Чи можна відкотити зміни?

Так. Рендеринг вмикається на рівні маршрутизації, тому відкат — це повернення попередніх правил без правки коду застосунку. Перед запуском фіксуємо поточну конфігурацію, щоб повернути її в початковий стан за одну операцію.

Обговоримо ваше завдання та запропонуємо план впровадження

Щоб запропонувати план впровадження, а не загальні слова, нам потрібно зрозуміти вашу поточну схему: на чому зібраний фронтенд, як віддається контент, хто з пошукових роботів і партнерських краулерів до вас ходить.

Динамічний рендеринг — це не «увімкнути й забути»: важливо правильно визначити, яких ботів відправляти на предрендер, а яких залишати на клієнтський рендеринг, інакше отримаєте дублі та розбіжності у видачі.

Опишіть завдання у вільній формі — повернемося з оцінкою термінів і планом робіт. Обговоримо на старті:

  • які сторінки та розділи віддаються через JavaScript і які з них критичні для індексації;
  • як зараз визначається бот: за user-agent, за IP чи через зворотний проксі, і де це ламається;
  • чи потрібен кеш предрендерених сторінок і за яким правилом його інвалідувати при оновленні контенту;
  • як рендерер вбудується в поточний стек — окремий сервіс, контейнер поруч із застосунком чи прошарок на балансувальнику;
  • що робити з динамічними блоками (персоналізація, кошик, авторизація), які не можна кешувати;
  • як налаштувати моніторинг: частка сторінок, відданих рендереру, час відповіді, помилки рендерингу;
  • план відкату, якщо після ввімкнення просяде швидкість віддачі для живих користувачів.

Зі свого боку зафіксуємо критерії готовності: робот отримує повністю відрендерений HTML, користувач — колишню швидкість, а контент в індексі збігається з тим, що бачать люди. Далі — узгодження етапів, доступи до середовищ і запуск.

Розкажіть про ваш випадок — який стек, скільки сторінок, що вже пробували. Цього достатньо, щоб повернутися з конкретним наступним кроком.

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

Останні роботи

  • Розробка сайту компанії B2B ADVANCE
    Розробка сайту компанії B2B ADVANCE
    1542
  • Розробка веб-додатків для компанії FEEDME
    Розробка веб-додатків для компанії FEEDME
    1394
  • Розробка веб-сайту для компанії БЕЛФІНГРУП
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    1081
  • Розробка інтернет магазину для компанії FURNORO
    Розробка інтернет магазину для компанії FURNORO
    1369
  • Розробка веб-додатків для компанії Enviok
    Розробка веб-додатків для компанії Enviok
    1142
  • Розробка веб-сайту для компанії ФІКСПЕР
    Розробка веб-сайту для компанії ФІКСПЕР
    1060