Статья 28.08.2026 4

Google написал, что сайт неэффективен на мобильных. Виноваты оказались счётчики

В Search Console у нашего сайта загорелось 102 неэффективных адреса на мобильных — и те же 102 зелёные на компьютере. Первая гипотеза про фоновую анимацию не подтвердилась замером. Виноваты оказались рекламные теги, а самой дорогой мелочью — вторая копия одной и той же библиотеки на 189 КБ. Разбор с цифрами и инструкция из шести шагов.

Google написал, что сайт неэффективен на мобильных. Виноваты оказались счётчики

В Search Console у нашего собственного сайта загорелось: 102 адреса «неэффективны» на мобильных — и ровно те же 102 адреса зелёные на компьютере. Один сайт, одна вёрстка, разный вердикт. Мы полезли разбираться, первая же очевидная гипотеза оказалась неверной, а виновником оказалось то, что стоит почти на каждом сайте и что владелец обычно вообще не считает частью сайта. Ниже — весь разбор с замерами и инструкция, как проверить и починить своё.

Что именно измеряет Google

Метрика называется INP — Interaction to Next Paint. Google описывает её так:

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

Пороги: хорошо — до 200 мс, требует улучшения — от 200 до 500 мс, плохо — больше 500 мс.

web.dev, документация по INP

Ключевое, что стоит понять владельцу: INP меряет не скорость загрузки. Он меряет, сколько времени проходит от касания до того, как экран отреагировал. Страница может открыться за секунду и всё равно быть «неэффективной», если после открытия она занята собой и не успевает ответить на палец.

И вторая важная вещь: это полевая метрика. Google берёт её у реальных посетителей, а не из лабораторного теста. Поэтому в отчёте она обновляется с задержкой и по скользящему окну — мгновенного зелёного после правки не будет.

Почему мобильный красный, а компьютер зелёный

Ответ скучный и полностью объясняет расхождение: процессор телефона в четыре-восемь раз медленнее настольного. Один и тот же кусок работы, который на ноутбуке занимает 60 мс и остаётся незаметным, на телефоне растягивается до 300–500 мс — и человек уже видит, что кнопка «залипла». Вёрстка тут ни при чём: код один и тот же, разная только скорость его исполнения.

Первая гипотеза оказалась неверной

На нашей главной есть фоновая анимация, и подозрение легло на неё сразу — так же, как ляжет у большинства владельцев: «на сайте что-то шевелится, значит оно и тормозит». Вместо того чтобы её выключать и надеяться, мы замерили три варианта одного и того же экрана: как есть, с отключённой анимацией и с заблокированными сторонними тегами.

Мерили не «ощущение», а конкретную величину — блокирующее время главного потока: сумму того, на сколько длинные задачи превышают 50 мс. Пока идёт такая задача, браузер не может ответить на касание, и именно из этого складывается INP.

Блокирующее время главного потока Один и тот же экран, эмуляция Pixel 5 с замедлением процессора в 4 раза как есть 1782 мс без анимации 1840 мс без сторонних тегов 378 мс Блокирующее время главного потока Один и тот же экран, эмуляция Pixel 5 с замедлением процессора в 4 раза как есть 1782 мс без анимации 1840 мс без сторонних тегов 378 мс
Собственный замер PromoPilot, 28 августа 2026. Отключение анимации не меняет ничего; блокировка рекламных тегов убирает 79% блокирующего времени.

Результат снял вопрос. Отключение анимации не дало ничего — 1840 мс против 1782 мс исходных, разница в пределах погрешности, а формально даже хуже. Зато блокировка сторонних тегов срезала блокирующее время с 1782 до 378 мс. 79% времени, в течение которого страница не могла ответить на палец, создавали не наш код и не анимация.

Настоящий виновник

В <head> стояли четыре тега, и все четыре — стандартные, которые владелец ставит и забывает: счётчик аналитики, тег рекламной системы и два пикселя социальной сети. Все с атрибутом async, все «не блокирующие». Суммарно около 600 КБ стороннего JavaScript.

Дальше нашлось то, ради чего стоит читать этот раздел. Библиотека счётчика весом 189 КБ скачивалась и выполнялась дважды.

Причина обыденная. У нас два идентификатора — аналитика и реклама. Для каждого система выдаёт готовый сниппет со своей строкой подключения, и владелец честно вставляет оба. Но библиотека там одна и та же: она обслуживает все идентификаторы через отдельные вызовы конфигурации. Второй экземпляр не добавляет ничего — он просто ещё раз качается, ещё раз разбирается и ещё раз исполняется на том самом медленном мобильном процессоре.

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

Почему «async» не спасает

Это второе место, где интуиция подводит. Атрибут async означает: «не задерживай разбор HTML, качай параллельно». Он честно делает свою работу — страница отрисовывается, не дожидаясь тега.

Но когда файл скачался, его всё равно надо исполнить, а исполняется он в том же единственном главном потоке, который отвечает на касания. async убирает блокировку разбора, но не убирает занятость потока — а INP меряет именно её. Отсюда типичная ситуация: страница показалась быстро, все счётчики «асинхронные», а метрика красная.

Ещё одна ловушка: одна отсрочка ничего не даёт

Напрашивающееся решение — отложить загрузку тегов до момента, когда браузер освободится. Мы так и сделали. И замерили.

Почему одна отсрочка загрузки не помогла Замеры до правки, после отсрочки тегов и после устранения дубля библиотеки как было 2026 мс только отсрочка 2101 мс отсрочка + убран дубль 1775 мс Почему одна отсрочка загрузки не помогла Замеры до правки, после отсрочки тегов и после устранения дубля библиотеки как было 2026 мс только отсрочка 2101 мс отсрочка + убран дубль 1775 мс
Отсрочка сдвигает работу во времени, но не убирает её. Результат дало устранение второй копии библиотеки на 189 КБ.

Блокирующее время после одной только отсрочки составило 2101 мс против 2026 мс исходных — то есть стало чуть хуже. Логика простая: отсрочка сдвигает работу во времени, но не убирает её. Работа никуда не делась, она просто выполняется позже — иногда ровно тогда, когда человек уже начал тыкать в экран.

Сработало другое: устранение второй копии библиотеки. После него блокирующее время упало до 1775 мс, а вместе с ним подтянулось всё остальное — первая отрисовка с 1128 до 824 мс, ответ сервера с 669 до 335 мс.

Что делать со своим сайтом: шесть шагов

Ниже — порядок, в котором каждый шаг имеет смысл после предыдущего. К каждому — проверка, по которой видно, что вы его прошли.

Шаг 1

Убедиться, что проблема ваша

Откройте в Search Console раздел с основными интернет-показателями и посмотрите на мобильную вкладку отдельно от компьютерной. Именно отдельно: расхождение «телефон красный, компьютер зелёный» — самый частый вид этой проблемы, и если смотреть только сводку, его легко не заметить.

Если мобильная вкладка зелёная — дальше можно не читать, у вас этой проблемы нет.

Проверка: вы знаете, сколько у вас неэффективных адресов на мобильном и с какой даты они такими стали. Дата важна: она подскажет, что вы тогда поставили на сайт.
Шаг 2

Измерить, а не гадать

Главная ошибка на этом шаге — начать выключать то, что кажется тяжёлым. Мы чуть не выключили анимацию, которая была ни при чём. Замерьте три варианта одной и той же страницы: как есть, без подозреваемого и без сторонних тегов.

Самый доступный способ — DevTools в Chrome: вкладка Performance, включить замедление процессора в 4 раза и эмуляцию мобильного, записать 10–15 секунд жизни страницы и посмотреть на длинные задачи. Они подсвечены и по каждой видно, какой файл её породил.

Проверка: у вас есть три числа, а не три мнения. Если разница между «как есть» и «без подозреваемого» меньше 10% — подозреваемый невиновен, ищите дальше.
Шаг 3

Проверить, не грузится ли одна библиотека дважды

Это самая дешёвая победа во всём списке. Откройте вкладку Network в DevTools, отфильтруйте по js и посмотрите на список: нет ли одинакового имени файла дважды, с разными параметрами в адресе.

Типовой случай — счётчик аналитики и рекламный тег одной системы: сниппеты разные, файл один. Оставьте одно подключение, а второй идентификатор настройте отдельным вызовом конфигурации. Ничего не потеряется: библиотека обслуживает оба.

<!-- было: два сниппета, одна и та же библиотека дважды -->
<script async src="…/tag.js?id=ID-1"></script>
<script async src="…/tag.js?id=ID-2"></script>

<!-- стало: библиотека одна, идентификаторов сколько нужно -->
<script async src="…/tag.js?id=ID-1"></script>
<script>
  config('ID-1');
  config('ID-2');
</script>
Проверка: во вкладке Network файл библиотеки встречается ровно один раз, а в панели рекламной системы и аналитики данные продолжают приходить.
Шаг 4

Отложить теги, не потеряв ни одного события

Только после шага 3 — потому что сама по себе отсрочка не помогает, мы это замерили. Но в связке она даёт освободить критические первые секунды.

Смысл приёма: вынести внешние файлы из <head> и подгружать их по первому из трёх событий — простой главного потока, таймаут в 3 секунды или первое касание экрана. Касание в списке обязательно: если человек уже взаимодействует со страницей, тег нужен немедленно, иначе вы потеряете как раз активную сессию.

События при этом не теряются, и это ключевая деталь. Крошечные заглушки-функции остаются в <head> и складывают все вызовы в очередь; когда библиотека наконец загрузится, она проиграет очередь целиком. Так эти сниппеты и задуманы — очередь предусмотрена их авторами.

Проверка: откройте свой сайт, кликните, и убедитесь, что в панели аналитики визит и событие пришли. Если не пришли — заглушка объявлена неправильно, и это надо чинить до выкладки.
Шаг 5

Перепроверить и не ждать мгновенного зелёного

После выкладки повторите замер из шага 2 — вы должны увидеть падение блокирующего времени. А вот отчёт в Search Console позеленеет не сразу: он строится на данных реальных посетителей за скользящее окно и обновляется с задержкой в недели.

Это нормально и не повод откатывать правку или делать вторую поверх первой. Лабораторный замер говорит, что стало лучше — значит, поле подтвердит это позже.

Проверка: блокирующее время в вашем замере упало, а данные в аналитике продолжают приходить в прежнем объёме. Обе части обязательны: правка, которая ломает учёт конверсий, — это не победа.
Шаг 6

Если не помогло — резерв

Когда сторонние теги приведены в порядок, а метрика всё ещё не в норме, дальше идут по убыванию отдачи: лишние счётчики, которые дублируют друг друга по назначению; неиспользуемый CSS (у нас на главной 92% правил не применяются); кэширование HTML, если страница отдаётся без кэша вовсе.

Отдельно стоит честно спросить: нужны ли вам все подключённые счётчики. Каждый из них — это чужой код, который выполняется на телефоне вашего посетителя, пока тот ждёт реакции на нажатие.

Проверка: вы можете назвать, зачем нужен каждый тег на вашем сайте и кто смотрит собранные им данные. Теги, на которые нет ответа, — первые кандидаты на удаление.

Чего делать не стоит

Выключать анимацию и оформление «на всякий случай» Мы замерили: отключение анимации не дало ничего, 1840 мс против 1782 мс. Убирать видимую часть сайта, не проверив её вклад, — верный способ ухудшить сайт и не улучшить метрику.
Успокаиваться на слове «async» Асинхронная загрузка снимает блокировку разбора страницы, но исполняется скрипт всё равно в главном потоке. INP меряет занятость этого потока, поэтому «у нас всё асинхронное» не значит «у нас всё хорошо».
Начинать с отсрочки загрузки Отсрочка сдвигает работу, а не убирает её: у нас после неё стало 2101 мс против 2026 мс исходных. Сначала уберите лишнее, потом двигайте оставшееся.
Ждать зелёного отчёта завтра Метрика полевая: она собирается у реальных посетителей за скользящее окно. Правка, сделанная сегодня, отразится в отчёте через недели — это не повод переделывать всё заново.

Коротко

«Неэффективно на мобильных при зелёном компьютере» почти всегда означает одно: страница занята исполнением чужого кода на медленном процессоре телефона. В нашем случае сторонние теги давали 79% блокирующего времени, а самой дорогой мелочью оказалась вторая копия одной и той же библиотеки на 189 КБ — она грузилась просто потому, что сниппет копируют по одному на каждый аккаунт.

Если делать одно действие прямо сейчас — откройте вкладку Network на своём сайте и посмотрите, не качается ли какой-нибудь файл счётчика дважды. Это проверка на минуту, и она бесплатна.

Проверить свой сайт

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

Частые вопросы

Что такое INP простыми словами?
Это время от касания экрана до момента, когда страница видимо отреагировала. Google считает хорошим показатель до 200 мс, плохим — больше 500 мс. Метрика оценивает отзывчивость, а не скорость загрузки: страница может открыться быстро и всё равно долго не отвечать на нажатия.

Почему сайт неэффективен на мобильных, но эффективен на компьютере?
Потому что процессор телефона в четыре-восемь раз медленнее настольного. Один и тот же скрипт, который на компьютере отрабатывает за 60 мс незаметно, на телефоне растягивается до 300–500 мс, и человек видит задержку. Код при этом один и тот же — разная только скорость исполнения.

Правда ли, что аналитика замедляет сайт?
В нашем замере сторонние теги давали 79% блокирующего времени главного потока: 1782 мс с ними против 378 мс без них. Это не повод убирать аналитику совсем, но это повод проверить, сколько у вас тегов, не дублируются ли они и когда именно они грузятся.

Помогает ли async у скрипта аналитики?
Частично. Атрибут async снимает блокировку разбора HTML, поэтому страница отрисовывается раньше. Но скачанный файл всё равно исполняется в главном потоке, а INP меряет занятость именно этого потока. Асинхронный скрипт может испортить метрику точно так же, как обычный.

Можно ли отложить загрузку счётчиков и не потерять конверсии?
Да, если оставить в head функции-заглушки, которые копят вызовы в очередь до загрузки библиотеки — так эти сниппеты и спроектированы. Обязательно включите первое касание экрана в число событий, по которым загрузка запускается, иначе можно потерять активную сессию. После выкладки проверьте, что события доходят.

Через сколько отчёт в Search Console станет зелёным после правки?
Не сразу. Показатель собирается у реальных посетителей за скользящее окно и обновляется с задержкой в недели. Ориентируйтесь на собственный лабораторный замер: если блокирующее время упало, поле подтвердит это позже.

Источники

Собственный замер PromoPilot, 28 августа 2026: эмуляция Pixel 5 с замедлением процессора в 4 раза, наблюдение за длинными задачами и откликом на касания на живом сайте.
web.dev, документация по метрике INP: определение, пороги «хорошо / требует улучшения / плохо», полевой характер измерения.
Google Search Console, отчёт «Основные интернет-показатели»: раздельные вкладки для мобильных и настольных устройств.

Поделиться:
Каскадный линкбилдинг

3 уровня ссылок + крауд для максимального эффекта. Попробуйте бесплатно!

Попробовать бесплатно
Бонус $30 при регистрации

Начните продвижение сайта уже сейчас — бонус зачисляется автоматически

Получить бонус
SEO-инструменты
Как работают каскады
L1 Статьи на трастовых площадках с DR 30–70
L2 Усиление L1 ссылками из блогов и Web 2.0
L3 Индексация и поддержка через профили и комментарии
C Крауд-ссылки для естественного профиля
Подробнее
Содержание