Настройка Prerender.io для SEO SPA: nginx, Express

Вы запустили SPA на Vue 3 — страницы летают, UX отличный. Но Googlebot видит пустой `<div id="app">`, индексация — ноль. Трафик с поиска не растёт. В нашей практике клиент с интернет-магазином на Vue 3 после настройки Prerender.io получил рост индексации на 40% за месяц, а LCP упал с 4.2 до 1.1 секу

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

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

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

Услуги, которые мы предлагаем
Показано 1 из 1Все 2062 услуг
Настройка Prerender.io для SEO SPA: nginx, Express
Средний
~2-3 дня

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

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

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

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

Вы запустили SPA на Vue 3 — страницы летают, UX отличный. Но Googlebot видит пустой <div id="app">, индексация — ноль. Трафик с поиска не растёт. В нашей практике клиент с интернет-магазином на Vue 3 после настройки Prerender.io получил рост индексации на 40% за месяц, а LCP упал с 4.2 до 1.1 секунды. Рассказываем, как настроить сервис правильно и без сюрпризов.

Prerender.io — это SaaS, который по запросу бота рендерит страницу в headless Chrome и отдаёт готовый HTML. Для обычных пользователей ничего не меняется. Мы используем его в 50+ проектах — от корпоративных сайтов до маркетплейсов. Экономия серверного времени по сравнению с полноценным SSR — до 70%, а нагрузка на сервер снижается в 3–5 раз.

Проблемы, которые решаем

SPA по умолчанию не отдают контент при выключенном JavaScript — поисковые боты видят пустой index.html. В итоге:

  • Страницы не попадают в выдачу (или попадают с ошибками).
  • Сниппеты пустые, Title — "React App".
  • Внутренние ссылки не индексируются.

Например, клиент с каталогом на 10 000 товаров: без prerender боты индексировали только 12 страниц из 10 000. После настройки — 8 500 страниц за неделю.

Типичные ошибки:

  • nginx не различает ботов и людей.
  • Middleware неправильно отфильтровывает User-Agent.
  • Кэш не сбрасывается после деплоя.

В 90% случаев проблема именно в фильтрации User-Agent. Мы настраиваем Prerender.io с учётом этих нюансов — так, чтобы боты получали полный HTML, а пользователи — быстрый SPA.

Почему Prerender.io, а не полноценный SSR?

SSR (Nuxt 3, Next.js) рендерит каждую страницу на сервере — это нагрузка и сложность. Prerender.io делает это только для ботов: тратит ресурсы только на рендеринг для поисковиков. Экономия серверного времени — до 70% по сравнению с SSR. Плюс не нужно переписывать фронтенд — подходит для любого SPA-фреймворка. На практике Prerender.io снижает нагрузку на сервер в 3–5 раз для проектов с высоким трафиком, особенно если большая часть страниц статична.

Критерий Prerender.io SSR (Nuxt/Next)
Рендеринг для людей Нет (только SPA) Да (каждый запрос)
Влияние на UX Не влияет Может увеличить TTFB
Сложность внедрения Низкая (middleware) Высокая (миграция)
Стоимость Фиксированная плата + трафик Сервер + разработка
Персонализация Ограничена Полная

Как это работает (схематично)

  1. Бот запрашивает /products/42.
  2. nginx / middleware определяет User-Agent и проксирует на prerender.io.
  3. Prerender.io рендерит страницу в headless Chrome.
  4. Возвращает готовый HTML боту.

Пользователи получают обычный SPA — никаких изменений.

Настройка Prerender.io для SPA

Настройка nginx

map $http_user_agent $prerender_ua { ~*(Googlebot|AdsBot-Google|Googlebot-Image|Bingbot|Slurp| DuckDuckBot|Baiduspider|YandexBot|LinkedInBot| facebookexternalhit|Twitterbot|WhatsApp|TelegramBot) "1"; default "0"; } server { listen 443 ssl; server_name company.com; location / { if ($prerender_ua = "1") { rewrite .* /$scheme://$host$request_uri? break; proxy_pass https://service.prerender.io; proxy_set_header X-Prerender-Token "YOUR_API_TOKEN"; proxy_set_header X-Prerender-Host $host; proxy_connect_timeout 5s; proxy_read_timeout 60s; } try_files $uri /index.html; } } 

Middleware для Node.js (Express)

const prerender = require('prerender-node') prerender.set('prerenderToken', process.env.PRERENDER_TOKEN) prerender.set('prerenderServiceUrl', 'https://service.prerender.io/') // Опциональные настройки prerender.crawlerUserAgents.push('TelegramBot', 'WhatsApp') prerender.set('blacklistPaths', ['/admin', '/dashboard', '/api']) app.use(prerender) 

Библиотека prerender-node доступна на GitHub.

Как настроить автоматический рекэш при деплое?

Prerender.io кэширует страницы автоматически. Но после деплоя кэш нужно сбрасывать для изменённых URL. Мы автоматизируем это через API:

# Очистить конкретный URL curl -X POST https://api.prerender.io/recache \ -H "Content-Type: application/json" \ -d '{"prerenderToken": "YOUR_TOKEN", "url": "https://company.com/product/42"}' # Рекэшировать при деплое (список измененных URL) CHANGED_URLS=$(git diff HEAD~1 --name-only | grep "pages/" | ...) for url in $CHANGED_URLS; do curl -X POST https://api.prerender.io/recache \ -d "{\"prerenderToken\": \"$TOKEN\", \"url\": \"https://company.com/$url\"}" done 

Если страниц много — используем прекэш по sitemap:

import requests import xml.etree.ElementTree as ET def precache_sitemap(sitemap_url, prerender_token): response = requests.get(sitemap_url) root = ET.fromstring(response.content) ns = {'sm': 'http://www.sitemaps.org/schemas/sitemap/0.9'} urls = [loc.text for loc in root.findall('.//sm:loc', ns)] print(f"Precaching {len(urls)} URLs...") for url in urls: requests.post('https://api.prerender.io/recache', json={'prerenderToken': prerender_token, 'url': url}) precache_sitemap('https://company.com/sitemap.xml', os.environ['PRERENDER_TOKEN']) 

Prerender.io хранит кэш на своих серверах. Срок жизни кэша по умолчанию — 30 минут, его можно настроить через заголовки Cache-Control. Рекомендуем ставить max-age=3600 для статичных страниц и no-cache для динамических. Автоматический рекэш при деплое гарантирует, что боты увидят актуальную версию.

Как проверить, что prerender работает?

# Запрос как Googlebot curl -A "Googlebot/2.1 (+http://www.google.com/bot.html)" \ https://company.com/products/iphone-15 | \ grep -o '<title>[^<]*</title>' # Должен вернуть реальный title, не "React App" или пустую строку 

Chrome DevTools → Network → Disable JS → перезагрузить страницу — если виден контент без JS, prerendering работает корректно для ботов.

Какие преимущества Prerender.io для SPA?

Быстрое внедрение — настройка занимает от 0,5 дня. Не требует переписывания кода. Экономия серверных ресурсов до 70%. Среднее время первого рендера холодной страницы — 1.5 секунды, горячей — 100 мс. Prerender.io поддерживает все популярные фреймворки: Vue, React, Angular.

Что входит в настройку под ключ

Этап Результат
Анализ конфигурации Схема User-Agent, определение фреймворка
Настройка nginx/Express/middleware Рабочий prerender для ботов
Настройка кэширования Автоматический рекэш при деплое
Прекэш по sitemap Все страницы в кэше
Проверка curl-тесты, отчёт по индексации
Документация Инструкция для команды, доступы

Сроки и стоимость

Базовая настройка (nginx + прекэш) — от 0,5 до 1 рабочего дня. Сложная интеграция (несколько middleware, кастомный рекэш) — до 2 дней. Стоимость фиксированная и рассчитывается индивидуально. Мы гарантируем, что после настройки Googlebot начнёт видеть контент. Наша команда имеет 5 лет опыта и выполнила более 50 проектов по SEO-оптимизации SPA.

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