K eltus
← Все проекты Кейс

GNews.cz

GNews — восьмиязычный гигант. Идеальная скорость, идеальное SEO.

  • 8 языков
  • 40K статических страниц
  • <250 мс TTFB
  • 100 Lighthouse
  • Без трекеров
  • Своя аналитика
GNews.cz cover

gnews.cz — переделан под скорость

Идеальная скорость, идеальное SEO — не гипербола. Именно это получено благодаря грамотному планированию и лучшим практикам на современном стеке.

Исходная точка

Gnews.cz — авторитетный независимый чешский новостной бренд, работавший на WordPress и TranslatePress. К 2026 году трещины стало невозможно игнорировать: девятисекундный TTFB, более пятнадцати секунд до полной отрисовки и CMS, надломившаяся под собственным весом.

Хуже всего был слой переводов. TranslatePress дробил каждую статью на сотни фрагментов, хранил их по языкам и пересобирал в SQL при каждом запросе страницы. С 48 000+ статьями на восьми языках база при отрисовке выполняла работу translation memory. Переключение языка означало новый запрос и новый join — каждый раз.

Задача: сохранить контент, сохранить редакционный процесс, сделать один из самых быстрых новостных сайтов в сети.

Новая платформа

Next.js 16 (App Router), TypeScript от и до, React Server Components, Tailwind CSS 4 и собственный аналитический микросервис на Go, заменяющий Google Analytics, Facebook Pixel, Plausible и Intercom одним self-hosted бинарём. Nginx с HTTP/2 и Let's Encrypt спереди, всё под systemd на одном Linux-хосте — без Docker, без Kubernetes, без облачного локина.

Откуда берётся скорость

Incremental Static Regeneration. Каждая статья, страница категории и главная для языка пререндерены. Читатель получает готовый HTML на первом байте, а не скелет. Когда редакция публикует материал, webhook ревалидирует именно затронутые страницы — обновление за секунды, без сброса кеша всего сайта. Тяжёлые виджеты обновляются в фоне; читатель не ждёт аналитический запрос.

Изображения. Каждое фото отдаётся в WebP, преобразуется по запросу под точные размеры слота, с 1x и 2x в srcset. Оригинал на 24 мегапикселя никогда не доходит до браузера. Заголовки статей — лесенка из пяти размеров от 480 до 1600 px; сетки на главной — 320–800 px; лайтбокс — до 2400 px.

Ленивая загрузка. Тяжёлые компоненты ниже первого экрана — включая анимированную карту посетителей в реальном времени — подключаются через intersection observers. Если читатель не прокручивает, JS не качается.

Переводы — как надо

У каждой статьи одна полная строка перевода на язык. Открыли /de/<slug> — ответ это одна строка из одной таблицы, отданная из кеша. Переключение языка — статическая ссылка на эквивалентный URL, а не повторный перевод. Корректный hreflang на каждой странице, отдельные sitemap по языкам (sitemap-cs.xml, sitemap-en.xml, …) для чистой индексации в Google News.

Весь архив статей перенесён на все восемь языков (чешский, английский, немецкий, испанский, французский, итальянский, русский, китайский) без потери ни одного существующего перевода. Нетехнические редакторы могут править любую UI-строку на любом языке через встроенный браузерный редактор.

Lighthouse и SEO

Идеальный Performance с первого билда. SEO 100 — за счёт JSON-LD NewsArticle, полного набора Open Graph и Twitter Card по каждому языку, семантического HTML, локалезависимых canonical и robots, держащего стейджинг вне индекса. Любой формат старых URL WordPress — uploads, ?p=-пермалинки, старые языковые пути TranslatePress — 301-редиректится на уровне nginx, сохраняя десятилетие беклинков и позиций.

Никаких трекеров, никаких сторонних скриптов

Ноль Google Analytics, ноль Facebook Pixel, ноль Intercom, ноль JS, требующего согласия. Кастомный API-маршрут Next.js пишет строки с хэшированными IP в локальную таблицу и питает виджет живой карты мира. Сервис на Go строит rolling-агрегаты из локальных access-логов. Данные читателя не покидают сервер.

Редакционный процесс

WYSIWYG на TinyMCE/Tiptap, повторяющий классический редактор WordPress, к которому редакция привыкла; современная медиатека, drag-and-drop галереи, автоматический WebP при загрузке, переключатели Top Story и GNEWS Exclusive, отложенная публикация, many-to-many категорий/тегов/регионов.

Возможности для читателя

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

Результат

Сайт, отдававший первый байт за девять секунд, теперь отдаёт полностью готовый закешированный HTML менее чем за 250 миллисекунд, а полностью отрисованный hero — за ~500 мс на тёплом кеше. Все Core Web Vitals — в верхней части зелёной полосы. Редакция публикует быстрее. Читатели остаются дольше. Google индексирует больше.

Восемь языков. 40 000 индивидуально пререндеренных страниц, каждая отдаётся из кеша — gnews.cz один из самых быстрых новостных сайтов в мире.

Тот же контент. Совершенно другая машина под ним.