Fecha de publicación: 22 de septiembre de 2025; última actualización: 7 de enero de 2026
Para los usuarios, pocas cosas son más frustrantes que una página web que de repente se ralentiza, agota la batería o consume su asignación mensual de datos. A veces, el problema no es el contenido que vinieron a ver, sino un anuncio que se ejecuta en segundo plano.
Para proteger la experiencia del usuario, Chrome aplica límites a los recursos que puede usar un anuncio. Cuando un anuncio supera estos límites y se convierte en un anuncio pesado, Chrome lo descarga para liberar los recursos del dispositivo.
En esta documentación, se explica cómo funciona esta intervención, los umbrales específicos involucrados y algunas prácticas recomendadas que puedes usar para garantizar que los anuncios se publiquen sin problemas.
¿Qué es la intervención de anuncios pesados?
La intervención de anuncios pesados es un mecanismo de Chrome que supervisa el uso de recursos de los marcos de anuncios. Si un anuncio consume una cantidad desproporcionada de ancho de banda o potencia de procesamiento de la CPU, Chrome descargará ese marco de anuncio específico.
En lugar del anuncio, el usuario verá un cuadro gris con un mensaje que indica que se quitó el anuncio, que suele estar acompañado de un vínculo a Detalles en el que se explica que el anuncio usó demasiados recursos.
¿Cuándo se considera que un anuncio es pesado?
Chrome determina que un anuncio es pesado en función de tres umbrales específicos. Si el usuario no interactuó con un anuncio y este cumple con alguno de los siguientes criterios, se descargará:
- Uso de la red: El anuncio usa más de cuatro megabytes de ancho de banda de la red.
- Uso máximo de la CPU: El anuncio usa el subproceso principal durante más de 15 segundos en cualquier período de 30 segundos.
- Uso total de la CPU: El anuncio usa el subproceso principal durante más de 60 segundos en total. Todos los recursos que usan los elementos iframe descendientes del marco del anuncio se contabilizan para los límites de la intervención en ese anuncio.
¿Cuáles son algunos de los activadores comunes de esta intervención?
Es más probable que ciertos tipos de comportamientos de anuncios activen estas intervenciones que otros. Entre los culpables más comunes, se incluyen los siguientes:
- Contenido multimedia sin comprimir: Carga imágenes extremadamente grandes y mal comprimidas.
- JavaScript pesado: Realizar operaciones extensas, como decodificar archivos de video con JavaScript
- Cálculos pesados: Realizar cálculos complejos en segundo plano
- Contenido de video sin gestos: Carga archivos de video grandes antes de que un usuario interactúe con un anuncio.
¿Qué sucede cuando se quita un anuncio?
Cuando Chrome detecta que un anuncio superó los umbrales de anuncios pesados, toma medidas de inmediato para proteger los recursos del dispositivo del usuario.
La experiencia del usuario
Desde la perspectiva del usuario, el anuncio se deja de cargar de inmediato. En su lugar, Chrome muestra un cuadro gris con el mensaje Se quitó el anuncio. Si el usuario hace clic en Detalles dentro del contenedor, verá una explicación específica.
La experiencia del desarrollador
Chrome también genera un informe de intervención con la API de Reporting para informarte exactamente lo que sucedió. Anteriormente, estos informes solo se enviaban al propio marco del anuncio y a sus marcos descendientes. Sin embargo, los publicadores a menudo no tenían forma de saber que se quitaban los anuncios de sus propias páginas. Para abordar este problema, Chrome amplió el mecanismo de informes. Ahora, los informes de intervención se envían al marco de incorporación (el elemento superior del marco del anuncio raíz), además de al marco del anuncio en sí. Los informes que se envían al iframe de incorporación incluyen el ID del iframe secundario y la URL del iframe del anuncio.
Para configurar la página para los informes HTTP, la respuesta debe incluir el encabezado Report-To:
Reporting-Endpoints: default="https://example.com/reports"
La solicitud POST que se activará incluirá un informe como el siguiente:
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"
}
}]
El marco de incorporación recibirá un informe similar, dirigido a la URL del marco de incorporación, pero el mensaje también contendrá el ID del marco secundario y la URL específica del marco secundario:
...
"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)"
...
La API de JavaScript proporciona el objeto ReportingObserver con un método observe() que se puede usar para activar una devolución de llamada proporcionada en las intervenciones. Esto puede ser útil si deseas adjuntar información adicional al informe para ayudar en la depuración.
// 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();
Dado que la intervención descarga la página del iframe (por ejemplo, un anuncio), usa el evento pagehide para asegurarte de que la devolución de llamada de informes capture el informe de intervención antes de que desaparezca la página.
window.addEventListener('pagehide', (event) => {
// pull all pending reports from the queue
let reports = observer.takeRecords();
sendReports(reports);
});
El JSON resultante de JavaScript es similar al que se envió en la solicitud 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',
},
},
];
Prácticas recomendadas para desarrolladores
Para evitar que tus anuncios aparezcan en el banner de anuncios pesados, ten en cuenta las siguientes prácticas recomendadas:
- Exigir interacción del usuario para el contenido pesado: Los criterios de intervención se aplican a los anuncios con los que el usuario no interactuó. Si un usuario hace clic en tu anuncio o lo presiona, ya no se aplicarán los límites de recursos. En el caso de las experiencias de video o multimedia enriquecidas, espera a que el usuario realice un gesto (como "hacer clic para reproducir") antes de cargar recursos pesados.
- Optimiza las imágenes y los videos: Asegúrate de que las imágenes estén comprimidas y los videos estén optimizados para la Web. Evita cargar archivos de video grandes automáticamente. En su lugar, usa marcadores de posición livianos hasta que el usuario interactúe.
- Audita el uso de la CPU: Las animaciones complejas o las operaciones de JavaScript que activan el diseño y la pintura continuos pueden aumentar el uso de la CPU. Usa herramientas para identificar los cuellos de botella en tu código que podrían mantener ocupado el subproceso principal durante períodos prolongados.
- Supervisa los fotogramas descendientes: Recuerda que el recuento de recursos incluye todo lo que se encuentra dentro del iframe de tu anuncio. Si tu anuncio carga píxeles de seguimiento o subframes de terceros, el uso de recursos de estos se contabiliza para tu límite.
- Aísla el contenido que no es de anuncios: Separa los fotogramas de contenido que no son de anuncios en diferentes dominios o patrones reconocibles que es poco probable que el proveedor de la lista de filtros considere dominios de anuncios.
¿Cómo depurar y diagnosticar la causa de una intervención?
Para solucionar y resolver de manera eficaz las intervenciones de anuncios pesados, primero debes comprender cómo la lógica de detección de Chrome identifica el contenido como un anuncio y, luego, usar las herramientas para desarrolladores integradas para auditar los activadores de recursos específicos que provocaron la eliminación.
¿Cómo detecta Chrome la presencia de un anuncio?
Chrome etiqueta el contenido como anuncio comparando las solicitudes de recursos con una lista de filtros. La lógica de detección se aplica al contenido dentro de los iframes. El marco de la página principal nunca se considera relacionado con los anuncios, incluso si contiene secuencias de comandos de anuncios. Ten en cuenta que un iframe cargado desde un recurso que coincide con la lista de filtros se considerará un anuncio, incluso si también se carga otro contenido que no es publicitario desde ese iframe. Un ejemplo de esto es que un reproductor de video cargado en un iframe etiquetado como anuncio también podría cargar contenido que no sea publicitario.
¿Cómo verificar la detección de anuncios?
Como desarrollador, puedes verificar visualmente si Chrome detectó correctamente tu contenido como anuncio con las Herramientas para desarrolladores de Chrome.
- Destaca los marcos de anuncios: En el panel Rendering, selecciona Highlight Ad Frames, que codifica por colores los marcos de anuncios detectados en rojo en la pantalla.
- Anotación de elementos: En el panel Elementos, los iframes de anuncios detectados mostrarán una anotación de anuncio junto a la etiqueta de apertura
<iframe>. - Actividad de red: En el panel Red, filtra las solicitudes según un valor booleano
Is ad-related. - Estado del anuncio: En el panel de la aplicación, en la sección Frames, los fotogramas etiquetados como anuncios incluirán un atributo
Ad Status.
¿Cómo diagnosticar la causa de una intervención?
Chrome proporciona herramientas para auditar y mejorar la calidad y el rendimiento de las páginas web. Ejecuta Lighthouse en las Herramientas para desarrolladores de Chrome para obtener informes sobre el rendimiento de tu página. También puedes consultar la colección web.dev/fast y explorar más información sobre las métricas web.
Uso de red
Abre el panel Red en las Herramientas para desarrolladores de Chrome para ver la actividad general de la red del anuncio. Marca la opción Inhabilitar caché para obtener resultados coherentes en cargas repetidas.
El valor transferido en la parte inferior de la página te mostrará el importe transferido para toda la página. Para restringir las solicitudes solo a las relacionadas con el anuncio, usa la entrada Filter en la parte superior.
Si encuentras la solicitud inicial del anuncio, por ejemplo, la fuente del iframe, usa la pestaña Iniciador dentro de la solicitud para ver todas las solicitudes que activa.
Ordenar la lista general de solicitudes por tamaño es una buena forma de detectar recursos demasiado grandes. Entre los culpables habituales, se incluyen las imágenes y los videos que no se optimizaron.
Además, ordenar por nombre puede ser una buena manera de detectar solicitudes repetidas. Es posible que no sea un solo recurso grande el que active la intervención, sino una gran cantidad de solicitudes repetidas que superan el límite de forma incremental.
Uso de CPU
El panel Rendimiento en Herramientas para desarrolladores te ayudará a diagnosticar problemas de uso de la CPU. Abre el menú Configuración de captura. Usa el menú desplegable CPU para reducir la velocidad de la CPU lo más posible. Es mucho más probable que las intervenciones para la CPU se activen en dispositivos de menor potencia que en máquinas de desarrollo de alta gama.
A continuación, haz clic en el botón Grabar para comenzar a grabar la actividad. Es posible que desees experimentar con el momento y la duración de la grabación, ya que una grabación larga puede tardar bastante en cargarse. Una vez que se cargue la grabación, puedes usar el cronograma superior para seleccionar una parte de la grabación. Enfócate en las áreas del gráfico en amarillo, púrpura o verde continuos que representan la creación de secuencias de comandos, la renderización y la pintura.
Explora las pestañas Bottom-Up, Call Tree y Event Log que se encuentran en la parte inferior. Ordenar esas columnas por Tiempo propio y Tiempo total puede ayudar a identificar cuellos de botella en el código.
El archivo fuente asociado también está vinculado allí, por lo que puedes seguirlo hasta el panel Fuentes para examinar el costo de cada línea.
Los problemas habituales que se deben buscar aquí son las animaciones mal optimizadas que activan operaciones de diseño y pintura continuas, o bien operaciones costosas que están ocultas dentro de una biblioteca incluida.
¿Cómo denunciar intervenciones incorrectas?
Si el contenido que no es de anuncios se etiquetó como tal, considera cambiar el código para evitar que coincida con las reglas de filtrado o comunícate directamente con los mantenedores de EasyList para cambiar las reglas de filtrado. Recuerda que la intervención de anuncios pesados no afecta los fotogramas con gestos del usuario, por lo que se puede excluir el video si se requiere hacer clic en un botón de reproducción antes de cargar el contenido. Si la EasyList no coincide con tu contenido y Chrome clasificó erróneamente el contenido como relacionado con anuncios, puedes informar un problema a Chrome con esta plantilla. Cuando plantees un problema, incluye un ejemplo capturado del informe de intervención y una URL de muestra para reproducir el problema.