Zamin.uz — мой новостной портал, запущенный в 2014 году. В 2015 году он занял почётное 2-е место на Национальном интернет-конкурсе Узбекистана. На сегодняшний день мои авторские материалы прочитаны более 155 миллионов раз.
В этой статье я расскажу о технической стороне проекта — какие решения работали более 10 лет и какие оказались ошибочными.
Задача
Новостной сайт отличается от обычного сайта тремя вещами:
- Объём контента постоянно растёт — сегодня 200 тысяч страниц, завтра 210 тысяч
- Скорость публикации новостей решающая — для Google Discover и «Top stories» материалы должны попасть в индексацию в течение минут
- Многоязычность — один материал выходит на нескольких языках, и они должны быть правильно связаны друг с другом
Многоязычная архитектура
Сайт работает на нескольких языках. Самая частая ошибка здесь — указывать hreflang-теги в HTML и sitemap по-разному. В таком случае Google игнорирует оба.
Правило простое: набор hreflang в HTML <head> должен символ в символ совпадать с набором в sitemap. Должен быть и x-default.
Для каждого языка ведётся отдельный новостной sitemap (news_latest_<til>.xml) — Google News ожидает именно этот формат.
Индексация архива: главная ошибка здесь
При миграции новостного сайта люди обычно добавляют в sitemap «последние 1000 статей». В результате 10-летний архив становится невидимым для Google, и органический трафик резко падает.
Правильное решение — весь архив через sitemap-index:
- В каждом сегменте не более 40 000 URL
- Сегменты собираются в файле sitemap-index
- Для новостей отдельный короткий sitemap (последние 48 часов) — для Google News
Сейчас в sitemap Zamin более 190 000 URL, и все они открыты для индексации.
Скорость: стратегия кэша
Для новостного сайта вопрос кэша противоречив: с одной стороны, нужно снизить нагрузку, с другой — новый материал должен отображаться сразу.
Рабочее решение:
- Короткий кэш для HTML — 3–10 минут, а не час. Для Google Discover новизна (freshness) критична
- Долгий кэш для статических ассетов — 30 дней,
immutable, с версией в URL - При публикации нового материала очищаются только соответствующие URL из кэша
Последний пункт важен: очистка всей зоны (purge_everything) создаёт на origin большую нагрузку одновременно — это «cache stampede». Очищайте только изменённые URL.
Изображения
На новостном сайте изображение — половина трафика. В Zamin все изображения отдаются через одну точку (/uploads/mini/WxH/...) и конвертируются в WebP.
Важная деталь: не полагайтесь на собственные оптимизаторы изображений фреймворка (например, Next.js /_next/image) — на уровне CDN или Apache они могут неожиданно возвращать 403. Свой путь надёжнее.
Интеграция с Telegram
Каждый новый материал автоматически публикуется в Telegram-канал. Это даёт две вещи: дополнительный трафик и более быстрое распространение материала.
Что было ошибкой
Не удалить старый sitemap при миграции. Если старый sitemap остаётся в Google Search Console, Google продолжает запрашивать старые URL, и crawl budget тратится впустую.
Редирект несуществующих страниц на главную. Это считается «soft 404» и наказывается. Правильный путь: если контент есть на другом языке — 307, если это старый тег — fallback на поиск, если его нет вообще — честный 404 или 410.
Не обновлять dateModified при изменении контента. В эпоху AI-поиска это особенно дорого обходится — страница, не обновлявшаяся более 6 месяцев, теряет право на цитирование.
Заключение
Новостной сайт — это постоянная техническая дисциплина. Нельзя просто один раз правильно построить: архив растёт, требования Google меняются, политика кэша пересматривается.
Три вещи дали наибольший эффект: полная индексация архива, короткий кэш HTML и последовательный hreflang.