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 de datos mensual. A veces, el culpable 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 funcionen sin problemas.
¿Qué es la intervención de anuncios pesados?
La intervención de anuncios pesados es un mecanismo en 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 Se quitó el anuncio , que suele ir acompañado de un vínculo 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 cumple con alguno de los siguientes criterios, se descargará:
- Uso de red: El anuncio usa más de cuatro megabytes de ancho de banda de red.
- Uso máximo de la CPU: El anuncio usa el subproceso principal durante más de 15 segundos en cualquier ventana 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 iframes descendientes del marco de anuncio se cuentan en los límites de la intervención en ese anuncio.
¿Cuáles son algunos 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 comunes, se incluyen los siguientes:
- Medios sin comprimir: Carga de imágenes extremadamente grandes y mal comprimidas.
- JavaScript pesado: Realización de operaciones extensas, como la decodificación de archivos de video con JavaScript.
- Cálculos pesados: Realización de cálculos complejos en segundo plano.
- Contenido de video sin gestos: Carga de 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 inmediatas para proteger los recursos del dispositivo del usuario.
La experiencia del usuario
Desde la perspectiva del usuario, el anuncio se descarga 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 de los desarrolladores
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 marco de 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 solucionar este problema, Chrome amplió el mecanismo de informes. Ahora, los informes de intervención se envían al marco de incorporación (el superior del marco de anuncio raíz), además del marco de anuncio. Los informes enviados al marco de incorporación incluyen el ID del marco secundario y la URL del marco de 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 de publicación activada incluirá un informe como este:
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 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 con 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 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 envía 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 queden bajo el banner de anuncios pesados, ten en cuenta las siguientes prácticas recomendadas:
- Requiere la 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, los límites de recursos ya no se aplicarán. Para las experiencias de video o multimedia enriquecida, espera un gesto del usuario (como "hacer clic para reproducir") antes de cargar recursos pesados.
- Optimiza imágenes y 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 cuellos de botella en tu código que puedan mantener ocupado el subproceso principal durante períodos prolongados.
- Supervisa los marcos descendientes: Recuerda que el recuento de recursos incluye todo lo que está dentro del iframe de tu anuncio. Si tu anuncio carga píxeles de seguimiento de terceros o submarcos, su uso de recursos se cuenta en tu límite.
- Aísla el contenido que no es de anuncios: Separa los marcos de contenido que no son de anuncios en diferentes dominios o patrones reconocibles que es poco probable que la política del proveedor de la lista de filtros considere dominios de anuncios.
¿Cómo depurar y diagnosticar la causa de una intervención?
Para solucionar problemas 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 llevaron a la eliminación.
¿Cómo detecta Chrome la presencia de un anuncio?
Chrome etiqueta el contenido como un anuncio haciendo coincidir 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 coincida con la lista de filtros se considerará un anuncio, incluso si también se carga otro contenido que no es de anuncios desde ese marco. Un ejemplo de esto es que un reproductor de video cargado en un iframe etiquetado como un anuncio también puede cargar contenido que no es de anuncios.
¿Cómo verificar la detección de anuncios?
Como desarrollador, puedes verificar visualmente si Chrome detectó correctamente tu contenido como un anuncio con las Herramientas para desarrolladores de Chrome.
- Destacar marcos de anuncios: En el panel Rendering, selecciona Highlight Ad Frames, que codifica por color los marcos de anuncios detectados en rojo en la pantalla.
- Anotación de elementos: En el panel Elements, los iframes de anuncios detectados mostrarán una anotación de anuncio junto a la etiqueta
<iframe>de apertura. - Actividad de red: En el panel de redes, filtra las solicitudes en función de un valor booleano
Is ad-related. - Estado del anuncio: En el panel de la aplicación, en la sección Frames , los marcos 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 esenciales.
Uso de red
Abre el panel Network en las Herramientas para desarrolladores de Chrome para ver la actividad de red general del anuncio. Marca la opción Disable cache para obtener resultados coherentes en cargas repetidas.
El valor transferido en la parte inferior de la página te mostrará la cantidad transferida 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 Initiator dentro de la solicitud para ver todas las solicitudes que activa.
Ordenar la lista general de solicitudes por tamaño es una buena manera de detectar recursos demasiado grandes. Entre los culpables comunes, se incluyen imágenes y 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 Performance en las Herramientas para desarrolladores te ayudará a diagnosticar problemas de uso de la CPU. Abre el menú Capture Settings. Usa el menú desplegable CPU para ralentizar 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 Record para comenzar a registrar la actividad. Es posible que desees experimentar con cuándo y durante cuánto tiempo grabas, ya que un seguimiento largo puede tardar bastante en cargarse. Una vez que se carga la grabación, puedes usar la línea de tiempo superior para seleccionar una parte de la grabación. Enfócate en las áreas del gráfico en amarillo, morado o verde continuos que representan la secuencia de comandos, la renderización y la pintura.
Explora las pestañas Bottom-Up, Call Tree y Event Log en la parte inferior. Ordenar esas columnas por Self Time y Total Time 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 Sources para examinar el costo de cada línea.
Los problemas comunes que debes buscar aquí son las animaciones mal optimizadas que activan el diseño y la pintura continuos, o las operaciones costosas que están ocultas dentro de una biblioteca incluida.
¿Cómo informar 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 administradores de EasyList para cambiar las reglas de filtrado. Recuerda que la intervención de anuncios pesados no afecta los marcos 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 EasyList no coincide con tu contenido y Chrome clasificó erróneamente el contenido como relacionado con anuncios, puedes plantear un problema con Chrome usando esta plantilla. Cuando plantees un problema, incluye un ejemplo capturado del informe de intervención y una URL de ejemplo para reproducir el problema.