Разберитесь с интенсивными рекламными вставками Chrome.

Опубликовано: 22 сентября 2025 г., Последнее обновление: 7 января 2026 г.

Для пользователей мало что может быть более неприятным, чем внезапное замедление работы веб-страницы, разрядка батареи или исчерпание лимита трафика. Иногда виновником оказывается не контент, который они хотели посмотреть, а реклама, работающая в фоновом режиме.

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

В этом документе объясняется, как работает это вмешательство, какие конкретные пороговые значения используются, а также приводятся некоторые рекомендации, которые помогут обеспечить бесперебойную работу рекламы.

Что такое интенсивное рекламное вмешательство?

Механизм интенсивного использования рекламы в Chrome — это функция, которая отслеживает использование ресурсов рекламными фреймами. Если реклама потребляет непропорционально большое количество полосы пропускания или вычислительной мощности процессора, Chrome выгрузит этот конкретный рекламный фрейм.

Вместо рекламы пользователь увидит серый прямоугольник с сообщением «Реклама удалена» , обычно сопровождаемым ссылкой на «Подробности» , объясняющей, что реклама использовала слишком много ресурсов.

Вместо громоздкой рекламы, превышающей лимит ресурсов, появилось серое поле с надписью «Реклама удалена» и ссылкой «Подробности».
Пример отображения рекламы после её удаления.

Когда реклама считается «тяжелой»?

Chrome определяет «тяжеловесность» рекламы на основе трех конкретных пороговых значений. Если пользователь не взаимодействовал с рекламой, и она соответствует любому из следующих критериев, она будет выгружена:

  • Использование сети: Реклама потребляет более четырех мегабайт сетевой полосы пропускания.
  • Пиковое использование ЦП: Рекламное объявление использует основной поток более 15 секунд в течение любого 30-секундного окна.
  • Общее использование ЦП: Реклама использует основной поток более 60 секунд в общей сложности. Все ресурсы, используемые любыми дочерними iframe-элементами рекламного фрейма, учитываются в рамках лимита на вмешательство в данную рекламу.

Какие существуют распространенные триггеры для такого вмешательства?

Certain types of ad behaviors are more likely to trigger these interventions than others. Common culprits include:

  • Несжатые медиафайлы: Загрузка чрезвычайно больших, плохо сжатых изображений.
  • Интенсивное использование JavaScript: выполнение сложных операций, таких как декодирование видеофайлов с помощью JavaScript.
  • Сложные вычисления: Выполнение трудоемких вычислений в фоновом режиме.
  • Видеоконтент без жестов: загрузка больших видеофайлов до того, как пользователь начнет взаимодействовать с рекламой.

Что происходит, когда объявление удаляют?

When Chrome detects that an ad has exceeded the heavy ad thresholds, it takes immediate action to protect the user's device resources.

Пользовательский опыт

С точки зрения пользователя, реклама немедленно удаляется. Вместо неё Chrome отображает серый прямоугольник с сообщением: «Реклама удалена» . Если пользователь нажмет « Подробности» внутри этого прямоугольника, он увидит подробное объяснение.

Опыт разработчика

Chrome также генерирует отчет о вмешательстве с помощью API отчетов , чтобы вы точно знали, что произошло. Ранее эти отчеты отправлялись только самому рекламному фрейму и его дочерним фреймам. Однако у издателей часто не было возможности узнать, что реклама на их собственных страницах удаляется. Чтобы решить эту проблему, Chrome расширил механизм отчетов. Теперь отчеты о вмешательстве отправляются не только самому рекламному фрейму, но и встраиваемому фрейму (родительскому фрейму корневого рекламного фрейма). Отчеты, отправляемые встраиваемому фрейму, включают идентификатор дочернего фрейма и URL-адрес рекламного фрейма.

Для настройки страницы для HTTP-отчетов ответ должен включать заголовок Report-To :

Reporting-Endpoints: default="https://example.com/reports"

В результате выполнения POST-запроса будет отправлен отчет следующего вида:

POST /reports HTTP/1.1
Host: example.com

Content-Type: application/report

[{
 "type": "intervention",
 "age": 60,
 "url": "https://example.com/url/of/ad.html",
 "body": {
   "sourceFile": null,
   "lineNumber": null,
   "columnNumber": null,
   "id": "HeavyAdIntervention",
   "message": "Ad was removed because its CPU usage exceeded the limit. See https://www.chromestatus.com/feature/4800491902992384?utm_source=devtools"
 }
}]

Встроенный фрейм получит аналогичный отчет, адресованный URL-адресу встроенного фрейма, но сообщение дополнительно будет содержать идентификатор дочернего фрейма и конкретный URL-адрес дочернего фрейма:

...
"message": "Ad was removed because its CPU usage exceeded the limit. See https://www.chromestatus.com/feature/4800491902992384?utm_source=devtools (id=123;url=http://example2.com/pre-redirect-ad-url.html)"
...

API JavaScript предоставляет объекту ReportingObserver метод observe() , который можно использовать для запуска предоставленной функции обратного вызова при возникновении событий. Это может быть полезно, если вы хотите добавить к отчету дополнительную информацию для облегчения отладки.

// callback that will handle intervention reports
function sendReports(reports) {
  for (let report of reports) {
    // Log the `report` json using your own reporting process
    navigator.sendBeacon('https://report.example/your-endpoint', report);
  }
}

// create the observer with the callback
const observer = new ReportingObserver(
  (reports, observer) => {
    sendReports(reports);
  },
  { buffered: true }
);

// start watching for interventions
observer.observe();

Поскольку вмешательство приводит к выгрузке страницы iframe (например, рекламы), используйте событие pagehide , чтобы гарантировать, что функция обратного вызова для формирования отчета о вмешательстве получит отчет до того, как страница исчезнет.

window.addEventListener('pagehide', (event) => {
  // pull all pending reports from the queue
  let reports = observer.takeRecords();
  sendReports(reports);
});

Полученный в результате выполнения JavaScript JSON-запроса аналогичен тому, который отправляется в POST запросе:

[
  {
    type: 'intervention',
    url: 'https://example.com/url/of/ad.html',
    body: {
      sourceFile: null,
      lineNumber: null,
      columnNumber: null,
      id: 'HeavyAdIntervention',
      message:
        'Ad was removed because its network usage exceeded the limit. See https://www.chromestatus.com/feature/4800491902992384',
    },
  },
];

Рекомендации для разработчиков

Чтобы ваши объявления не попадали под плотный рекламный баннер, примите во внимание следующие рекомендации:

  • Требуйте взаимодействия пользователя для контента, требующего большого объема данных: критерии вмешательства применяются к рекламе, с которой пользователь не взаимодействовал. Если пользователь кликает или нажимает на вашу рекламу, ограничения на ресурсы больше не применяются. Для видео или мультимедийного контента дождитесь жеста пользователя (например, «нажмите для воспроизведения»), прежде чем загружать ресурсоемкие материалы.
  • Оптимизируйте изображения и видео: убедитесь, что изображения сжаты, а видео оптимизированы для веб-сайтов. Избегайте автоматической загрузки больших видеофайлов; вместо этого используйте легкие заглушки, пока пользователь не заинтересуется.
  • Проверяйте использование ЦП: сложные анимации или операции JavaScript, запускающие непрерывную компоновку и отрисовку, могут значительно увеличивать загрузку ЦП. Используйте инструменты для выявления узких мест в вашем коде, которые могут длительное время занимать основной поток.
  • Отслеживайте дочерние фреймы: помните, что подсчет ресурсов включает все, что находится внутри iframe вашего объявления. Если ваше объявление загружает сторонние пиксели отслеживания или субфреймы, использование ими ресурсов учитывается в вашем лимите.
  • Изолируйте контент, не являющийся рекламой: разделите фреймы контента, не являющегося рекламой, на разные домены или узнаваемые шаблоны, которые вряд ли будут считаться рекламными доменами в соответствии с политикой поставщика списка фильтров .

Как отладить и диагностировать причину сбоя?

Для эффективного устранения неполадок и решения проблем, связанных с массированным внедрением рекламы, необходимо сначала понять, как логика обнаружения Chrome определяет контент как рекламу, а затем использовать встроенные инструменты разработчика для проверки конкретных факторов, приведших к удалению рекламы.

Как Chrome определяет наличие рекламы?

Chrome помечает контент как рекламу, сопоставляя запросы ресурсов со списком фильтров . Логика обнаружения применяется к контенту внутри iframe. Основной фрейм страницы никогда не считается связанным с рекламой, даже если он содержит рекламные скрипты. Обратите внимание, что iframe, загруженный из ресурса, соответствующего списку фильтров, будет считаться рекламой, даже если из этого фрейма также загружается другой контент, не являющийся рекламой. Например, видеоплеер, загруженный в iframe, помеченный как реклама, может также загружать контент, не являющийся рекламой.

Как проверить обнаружение рекламы?

As a developer you can visually verify if Chrome has successfully detected your content as an ad using Chrome DevTools.

  • Выделение рекламных фреймов: на панели «Рендеринг» выберите «Выделить рекламные фреймы» , что отобразит обнаруженные рекламные фреймы красным цветом на экране.
  • Аннотация элемента: На панели «Элементы» рядом с открывающим тегом <iframe> будет отображаться аннотация рекламного элемента для обнаруженных iframe-элементов.
  • Активность в сети: на панели «Сеть» отфильтруйте запросы на основе логического параметра Is ad-related .
  • Статус объявления: В панели приложения в разделе « Фреймы» фреймы, помеченные как рекламные, будут содержать атрибут Ad Status .

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

Chrome предоставляет инструменты для аудита и улучшения качества и производительности веб-страниц. Запустите Lighthouse в инструментах разработчика Chrome, чтобы получить отчеты о производительности вашей страницы. Вы также можете обратиться к коллекции web.dev/fast и изучить дополнительную информацию о Web Vitals .

Использование сети

Откройте панель «Сеть» в инструментах разработчика Chrome, чтобы увидеть общую активность в сети для этой рекламы. Установите флажок «Отключить кэширование» , чтобы получать стабильные результаты при повторных загрузках.

На панели «Сеть» в инструментах разработчика Chrome отображается записанная сетевая активность при включенной опции «Отключить кэширование».
Панель «Сеть» в инструментах разработчика.

Внизу страницы отображается сумма перевода за всю страницу. Чтобы ограничить запросы только теми, которые связаны с рекламой, используйте поле «Фильтр» вверху страницы.

Если вы нашли, например, первоначальный запрос к рекламе, источник iframe, используйте вкладку «Инициатор» в запросе, чтобы увидеть все запросы, которые он инициирует.

Вкладка «Инициатор» в инструментах разработчика отображает последовательность запросов ресурсов, инициированных конкретным рекламным фреймом.
Вкладка «Инициатор» для запроса.

Сортировка всего списка запросов по размеру — хороший способ выявить слишком большие ресурсы. Чаще всего это изображения и видео, которые не были оптимизированы.

Список в панели DevTools Network отсортирован по размеру ответа для выявления больших, неоптимизированных медиафайлов.
Сортировка запросов по размеру ответа.

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

использование ЦП

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

В настройках панели мониторинга производительности в инструментах разработчика выбран параметр «Ограничение производительности ЦП», позволяющий имитировать работу менее мощного оборудования с 6-кратным замедлением.
Enable network and CPU throttling in the Performance panel.

Далее нажмите кнопку «Запись» , чтобы начать запись активности. Возможно, вам захочется поэкспериментировать с временем и продолжительностью записи, так как загрузка длинной трассировки может занять довольно много времени. После загрузки записи вы можете использовать верхнюю временную шкалу, чтобы выбрать часть записи . Сосредоточьтесь на областях на графике, выделенных сплошным желтым, фиолетовым или зеленым цветом, которые представляют собой скриптинг, рендеринг и рисование.

Сводка трассировки производительности в инструментах разработчика с круговой диаграммой, визуализирующей время, затраченное на различные действия, такие как загрузка, написание скриптов, рендеринг и отрисовка.
Сводка трассировки на панели «Производительность».

Изучите вкладки «Снизу вверх» , «Дерево вызовов» и «Журнал событий» внизу. Сортировка этих столбцов по собственному времени и общему времени может помочь выявить узкие места в коде.

Вкладка «Снизу вверх» в панели «Производительность» сортирует данные по параметру «Собственное время», что позволяет точно определить конкретные узкие места.
Сортировка по времени, проведенному за собой, осуществляется на вкладке «Снизу вверх».

Там же находится ссылка на соответствующий исходный файл, поэтому вы можете перейти в панель «Источники» , чтобы посмотреть стоимость каждой строки.

Время выполнения отображается на панели «Источники».
Время выполнения отображается на панели «Источники».

В этом случае часто встречаются плохо оптимизированные анимации, которые вызывают непрерывную компоновку и отрисовку, или ресурсоемкие операции, скрытые в используемой библиотеке.

Как сообщить о некорректных действиях?

If non-ad content has been tagged as such, consider changing the code to avoid matching the filtering rules, or engage directly with the EasyList maintainers to change the filtering rules. Remember that the heavy ads intervention does not impact frames with user gesture, so video can be excluded by requiring clicking on a play button before loading content. If the EasyList does not match your content, and Chrome has somehow misclassified the content as ad related, then you can raise an issue with Chrome using this template . When raising an issue include a captured example of the intervention report and a sample URL to reproduce the issue.