Две трети обхода Google ушли на служебные запросы Next.js. Почти все за одну неделю

С 10 августа по 22 октября Googlebot сделал на моём сайте promtime.net 25 943 запроса. 16 284 из них Search Console записала в «Другой тип файла»: это не страницы, не картинки и не скрипты. Все 990 примеров, которые консоль показывает в этой строке, выглядят одинаково: адрес страницы с хвостом ?_rsc=.

Сайт сделан на Next.js. Когда ссылка появляется на экране, роутер заранее подгружает данные страницы, на которую она ведёт: уходит запрос на тот же адрес с параметром _rsc и заголовком RSC: 1. В ответ приходит не HTML, а служебные данные React Server Components. Читателю это ускоряет переход. Googlebot тоже открывает страницы в браузере с JavaScript, и подгрузки срабатывают и у него.

Две трети обхода Google ушли на служебные запросы Next.js. Почти все за одну неделю

Одна неделя в августе

Почти все эти запросы пришлись на шесть дней. С 18 по 23 августа Googlebot запросил 15 563 служебных адреса. Пик пришёлся на 19 августа: 10 917 запросов за сутки, из них 8 984 с _rsc. В обычный день до и после всплеска он делает около ста запросов на всё остальное.

С сентября служебных запросов около десяти в день, за два месяца набрался 521.

Значение после _rsc= Next.js считает из служебных заголовков запроса, поэтому у одной страницы таких адресов много. 28 сентября Googlebot за пару минут запросил один и тот же пост с шестью разными хвостами, а заодно главную, архив и поиск.

Две трети обхода Google ушли на служебные запросы Next.js. Почти все за одну неделю

Что это сломало

Сразу после этой недели показы сайта в Google упали почти до нуля, и связать одно с другим очень хочется. Данные этого не дают. Руководство Google о бюджете обхода написано для сайтов от миллиона страниц или от десяти тысяч, если они меняются каждый день. У нас их несколько тысяч.

Есть в том же руководстве и третий признак: большая доля адресов в статусе «Обнаружена, не проиндексирована». Такие адреса у нас действительно набрались, но в октябре, через полтора месяца после того, как служебные запросы почти исчезли.

Совпадение по времени есть: 17-19 августа на сайт вышли страницы о редакции, архив с навигатором по месяцам и бесконечная лента. Но какое изменение запустило всплеск и почему он кончился сам, по этим данным не видно.

Зато те же подгрузки задели живых читателей. Правило лимита в Cloudflare на нашем тарифе видит только путь, без параметров, и служебный запрос для него ничем не отличается от открытия страницы. На странице поста было 30 ссылок на теги в подвале и 13 на месяцы архива, и роутер подгружал каждую, как только она появлялась на экране. Один просмотр поста давал до 58 запросов. 8 октября лимит сработал на мне самом: на телефоне вместо сайта была ошибка 1015.

Что я поменял

  • Отключил подгрузку на плотных списках ссылок: теги, месяцы архива, карточки ленты. В Next.js это prefetch={false} у <Link>. Остальные ссылки остались как были.
  • Поднял лимит в Cloudflare вдвое.

И закрыл служебные адреса в robots.txt:

Disallow: /*?_rsc= Disallow: /*&_rsc=

Как проверить свой сайт

В Search Console: «Настройки», «Статистика сканирования», блок «По типу файла», строка «Другой тип файла». Внизу будут примеры адресов. Если там ?_rsc=, это тот же случай.

В логах сервера:

grep Googlebot access.log | grep -c '_rsc='

С 10 октября, когда появилось правило в robots.txt, Googlebot по логам сервера не запросил у нас ни одного адреса с _rsc. Только и до правила он их почти не запрашивал: всплеск кончился сам ещё в августе.

Новости про Claude и ИИ я каждый день собираю в канале Claude News.

22