Chrome-Mechanismus zum Entladen von Anzeigen

Veröffentlicht am 22. September 2025, zuletzt aktualisiert am 7. Januar 2026

Für Nutzer gibt es kaum etwas Frustrierenderes als eine Webseite, die plötzlich extrem langsam wird, den Akku schnell entlädt oder das monatliche Datenvolumen aufbraucht. Manchmal ist nicht der Content schuld, den sie sich ansehen wollten, sondern eine im Hintergrund laufende Werbung.

Zum Schutz der Nutzererfahrung begrenzt Chrome die Ressourcen, die eine Anzeige verwenden kann. Wenn eine Anzeige diese Grenzwerte überschreitet und zu einer ressourcenintensiven Anzeige wird, wird sie von Chrome entfernt, um die Ressourcen des Geräts freizugeben.

In dieser Dokumentation wird erläutert, wie diese Maßnahme funktioniert, welche Grenzwerte gelten und welche Best Practices Sie anwenden können, damit Anzeigen reibungslos ausgeliefert werden.

Was ist die Maßnahme gegen ressourcenintensive Anzeigen?

Die Maßnahme gegen ressourcenintensive Anzeigen ist ein Mechanismus in Chrome, der die Ressourcennutzung von Anzeigen-Frames überwacht. Wenn eine Anzeige unverhältnismäßig viel Bandbreite oder CPU-Leistung verbraucht, wird der entsprechende Anzeigen-Frame von Chrome entfernt.

Statt der Anzeige sehen Nutzer dann einen grauen Kasten mit der Meldung Anzeige entfernt. In der Regel ist auch ein Link Details zu sehen, der erklärt, dass die Anzeige zu viele Ressourcen verwendet hat.

Ein graues Feld mit der Aufschrift „Anzeige entfernt“ und einem Link „Details“, das anstelle einer ressourcenintensiven Anzeige angezeigt wird, die die Ressourcenlimits überschritten hat.
Beispiel für eine Anzeige nach dem Entfernen

Wann gilt eine Anzeige als ressourcenintensiv?

Chrome bestimmt anhand von drei spezifischen Grenzwerten, ob eine Anzeige ressourcenintensiv ist. Wenn ein Nutzer nicht mit einer Anzeige interagiert hat und sie eines der folgenden Kriterien erfüllt, wird sie entfernt:

  • Netzwerknutzung:Die Anzeige verwendet mehr als vier Megabyte Netzwerkbandbreite.
  • Maximale CPU-Nutzung:Die Anzeige verwendet den Hauptthread in einem beliebigen 30-Sekunden-Zeitraum länger als 15 Sekunden.
  • Gesamte CPU-Nutzung:Die Anzeige verwendet den Hauptthread insgesamt länger als 60 Sekunden. Alle Ressourcen, die von untergeordneten iFrames des Anzeigen-Frames verwendet werden, werden auf die Grenzwerte für die Maßnahme gegen diese Anzeige angerechnet.

Was sind einige häufige Auslöser für diese Maßnahme?

Bestimmte Arten von Anzeigenverhalten lösen diese Maßnahmen eher aus als andere. Häufige Ursachen sind:

  • Unkomprimierte Medien:Laden extrem großer, schlecht komprimierter Bilder.
  • Ressourcenintensives JavaScript:Ausführen umfangreicher Vorgänge wie das Decodieren von Videodateien mit JavaScript.
  • Ressourcenintensive Berechnungen:Ausführen komplexer Berechnungen im Hintergrund.
  • Videoinhalte ohne Gesten:Laden großer Videodateien, bevor ein Nutzer mit einer Anzeige interagiert.

Was passiert, wenn eine Anzeige entfernt wird?

Wenn Chrome feststellt, dass eine Anzeige die Grenzwerte für ressourcenintensive Anzeigen überschritten hat, werden sofort Maßnahmen ergriffen, um die Ressourcen des Geräts des Nutzers zu schützen.

Nutzererfahrung

Aus Nutzersicht wird die Anzeige sofort entfernt. Stattdessen zeigt Chrome einen grauen Kasten mit der Meldung Anzeige entfernt an. Wenn der Nutzer im Container auf Details klickt, wird eine genauere Erklärung angezeigt.

Entwicklererfahrung

Chrome generiert außerdem einen Bericht zur Maßnahme mit der Reporting API, damit Sie genau wissen, was passiert ist. Bisher wurden diese Berichte nur an den Anzeigen-Frame selbst und seine untergeordneten Frames gesendet. Publisher wussten jedoch oft nicht, dass Anzeigen auf ihren eigenen Seiten entfernt wurden. Aus diesem Grund hat Chrome den Berichtsmechanismus erweitert. Berichte zu Maßnahmen werden jetzt zusätzlich zum Anzeigen-Frame selbst auch an den Einbettungs-Frame (das übergeordnete Element des Stamm-Anzeigen-Frames) gesendet. Berichte, die an den Einbettungs-Frame gesendet werden, enthalten die ID des untergeordneten Frames und die URL des Anzeigen-Frames.

Wenn Sie die Seite für HTTP-Berichte konfigurieren möchten, muss die Antwort den Header Report-To enthalten:

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

Die ausgelöste Post-Anfrage enthält einen Bericht wie diesen:

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"
 }
}]

Der Einbettungs-Frame erhält einen ähnlichen Bericht, der an die URL des Einbettungs-Frames adressiert ist. Die Nachricht enthält jedoch zusätzlich die ID des untergeordneten Frames und die spezifische URL des untergeordneten Frames:

...
"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)"
...

Die JavaScript API stellt ReportingObserver mit einer observe()-Methode bereit, mit der ein bereitgestellter Callback für Maßnahmen ausgelöst werden kann. Das kann nützlich sein, wenn Sie dem Bericht zusätzliche Informationen hinzufügen möchten, um die Fehlerbehebung zu erleichtern.

// 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();

Da die Maßnahme die iFrame-Seite (z. B. eine Anzeige) entfernt, verwenden Sie das Ereignis pagehide, um sicherzustellen, dass der Reporting-Callback den Bericht zur Maßnahme erfasst, bevor die Seite verschwindet.

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

Das resultierende JSON aus dem JavaScript ähnelt dem, das in der POST-Anfrage gesendet wird:

[
  {
    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',
    },
  },
];

Best Practices für Entwickler

Damit Ihre Anzeigen nicht als ressourcenintensiv gekennzeichnet werden, sollten Sie die folgenden Best Practices beachten:

  • Nutzerinteraktion für ressourcenintensive Inhalte erforderlich machen:Die Kriterien für Maßnahmen gelten für Anzeigen, mit denen der Nutzer nicht interagiert hat. Wenn ein Nutzer auf Ihre Anzeige klickt oder tippt, gelten die Ressourcenlimits nicht mehr. Warten Sie bei Video- oder Rich-Media-Inhalten auf eine Nutzergeste (z. B. „Zum Abspielen klicken“), bevor Sie ressourcenintensive Assets laden.
  • Bilder und Videos optimieren:Achten Sie darauf, dass Bilder komprimiert und Videos für das Web optimiert sind. Laden Sie große Videodateien nicht automatisch, sondern verwenden Sie stattdessen Platzhalter, bis der Nutzer interagiert.
  • CPU-Nutzung prüfen:Komplexe Animationen oder JavaScript-Vorgänge, die kontinuierliches Layout und Rendering auslösen, können die CPU-Nutzung in die Höhe treiben. Verwenden Sie Tools, um Engpässe in Ihrem Code zu identifizieren, die den Hauptthread möglicherweise über längere Zeit beschäftigen.
  • Untergeordnete Frames überwachen:Die Anzahl der Ressourcen umfasst alles im iFrame Ihrer Anzeige. Wenn Ihre Anzeige Drittanbieter-Tracking-Pixel oder Unter-Frames lädt, wird deren Ressourcennutzung auf Ihr Limit angerechnet.
  • Nicht werbebezogene Inhalte isolieren: Trennen Sie nicht werbebezogene Content-Frames in verschiedene Domains oder erkennbare Muster auf, die nach den Richtlinien des Anbieters der Filterliste wahrscheinlich nicht als Werbedomains betrachtet werden.

Wie kann ich die Ursache einer Maßnahme debuggen und diagnostizieren?

Um Maßnahmen gegen ressourcenintensive Anzeigen effektiv zu beheben, müssen Sie zuerst verstehen, wie Chrome Inhalte als Anzeige erkennt. Verwenden Sie dann die integrierten Entwicklertools, um die spezifischen Ressourcenauslöser zu prüfen, die zum Entfernen geführt haben.

Wie erkennt Chrome das Vorhandensein einer Anzeige?

Chrome kennzeichnet Inhalte als Anzeige, indem Ressourcenanfragen mit einer Filterliste verglichen werden. Die Erkennungslogik gilt für Inhalte in iFrames. Der Hauptseiten-Frame wird nie als werbebezogen betrachtet, auch wenn er Anzeigenskripts enthält. Ein iFrame, der aus einer Ressource geladen wird, die mit der Filterliste übereinstimmt, wird als Anzeige betrachtet, auch wenn aus diesem Frame auch andere, nicht werbebezogene Inhalte geladen werden. Ein Beispiel dafür ist ein Videoplayer, der in einem iFrame geladen wird, der als Anzeige gekennzeichnet ist. Er kann auch nicht werbebezogene Inhalte laden.

Wie kann ich die Anzeigenerkennung überprüfen?

Als Entwickler können Sie mit den Chrome-Entwicklertools visuell überprüfen, ob Chrome Ihre Inhalte erfolgreich als Anzeige erkannt hat.

  • Anzeigen-Frames hervorheben: Wählen Sie im Bereich „Rendering“ die Option Anzeigen-Frames hervorheben aus. Dadurch werden erkannte Anzeigen-Frames auf dem Bildschirm rot hervorgehoben.
  • Elementannotation: Im Bereich „Elemente“ wird neben dem öffnenden <iframe> Tag eine Anzeigenannotation für erkannte Anzeigen-iFrames angezeigt.
  • Netzwerkaktivität:Filtern Sie im Bereich „Netzwerk“ Anfragen anhand eines booleschen Werts Is ad-related.
  • Anzeigenstatus:Im Bereich „Anwendung“ unter Frames enthalten mit Anzeigen getaggte Frames ein Attribut Ad Status.

Wie kann ich die Ursache einer Maßnahme diagnostizieren?

Chrome bietet Tools, mit denen Sie die Qualität und Leistung von Webseiten prüfen und verbessern können. Führen Sie Lighthouse in den Chrome-Entwicklertools aus, um Berichte zur Leistung Ihrer Seite zu erhalten. Sie können auch die web.dev/fast-Sammlung aufrufen und weitere Informationen zu Web Vitals erhalten.

Netzwerknutzung

Rufen Sie in den Chrome-Entwicklertools den Bereich Netzwerk auf, um die gesamte Netzwerkaktivität für die Anzeige zu sehen. Aktivieren Sie die Option Cache deaktivieren, um bei wiederholten Ladevorgängen konsistente Ergebnisse zu erhalten.

Der Bereich „Netzwerk“ in den Chrome-Entwicklertools mit aufgezeichneten Netzwerkaktivitäten und aktivierter Option „Cache deaktivieren“.
Bereich „Netzwerk“ in den Entwicklertools

Der übertragene Wert unten auf der Seite zeigt die übertragene Datenmenge für die gesamte Seite. Wenn Sie die Anfragen auf die Anfragen beschränken möchten, die sich auf die Anzeige beziehen, verwenden Sie die Filtereingabe oben.

Wenn Sie die ursprüngliche Anfrage für die Anzeige finden, z. B. die Quelle für den iFrame, können Sie auf dem Tab „Initiator“ in der Anfrage alle Anfragen sehen, die dadurch ausgelöst werden.

Der Tab „Initiator“ in den Entwicklertools zeigt die Abfolge der Ressourcenanfragen, die durch einen bestimmten Anzeigenframe ausgelöst werden.
Tab „Initiator“ für eine Anfrage

Wenn Sie die Gesamtliste der Anfragen nach Größe sortieren, können Sie übermäßig große Ressourcen erkennen. Häufige Ursachen sind nicht optimierte Bilder und Videos.

Die Liste im DevTools-Netzwerkbereich ist nach Antwortgröße sortiert. So können Sie große, nicht optimierte Mediendateien erkennen.
Anfragen nach Antwortgröße sortieren

Außerdem kann das Sortieren nach Namen eine gute Möglichkeit sein, wiederholte Anfragen zu erkennen. Möglicherweise löst nicht eine einzelne große Ressource die Maßnahme aus, sondern eine große Anzahl wiederholter Anfragen, die den Grenzwert schrittweise überschreiten.

CPU-Nutzung

Der Bereich Leistung in den Entwicklertools hilft bei der Diagnose von Problemen mit der CPU-Nutzung. Öffnen Sie das Menü „Aufzeichnungseinstellungen“. Verwenden Sie das Drop-down-Menü CPU, um die CPU so weit wie möglich zu verlangsamen. Die Maßnahmen für die CPU werden auf Geräten mit geringerer Leistung viel häufiger ausgelöst als auf High-End-Entwicklungsmaschinen.

Einstellungen für die Erfassung des Leistungsbereichs in DevTools mit dem Drop-down-Menü für die CPU-Drosselung, um Hardware mit geringerer Leistung mit einer 6-fachen Verlangsamung zu simulieren.
Netzwerk- und CPU-Drosselung im Bereich „Leistung“ aktivieren

Klicken Sie dann auf den Button Aufzeichnen, um die Aufzeichnung der Aktivität zu starten. Sie können mit der Dauer und dem Zeitpunkt der Aufzeichnung experimentieren, da das Laden einer langen Aufzeichnung einige Zeit dauern kann. Sobald die Aufzeichnung geladen ist, können Sie mit der oberen Zeitachse einen Teil der Aufzeichnung auswählen. Konzentrieren Sie sich auf Bereiche im Diagramm in durchgehend gelber, lila oder grüner Farbe, die für Skripting, Rendering und Painting stehen.

Zusammenfassung des Leistungstraces in DevTools mit einem Kreisdiagramm, in dem die für verschiedene Aktivitäten wie Laden, Scripting, Rendern und Malen aufgewendete Zeit visualisiert wird.
Zusammenfassung einer Aufzeichnung im Bereich „Leistung“

Sehen Sie sich die Tabs „Bottom-Up“, „Aufrufstruktur“ und „Ereignisprotokoll“ unten an. Wenn Sie diese Spalten nach Selbstzeit und Gesamtzeit sortieren, können Sie Engpässe im Code erkennen.

Der Tab „Bottom-up“ im Bereich „Leistung“, sortiert nach „Selbstzeit“, um bestimmte Engpässe zu ermitteln.
Nach „Selbstzeit“ auf dem Tab „Bottom-Up“ sortieren

Die zugehörige Quelldatei ist dort ebenfalls verlinkt. Sie können sie also im Bereich Quellen aufrufen, um die Kosten jeder Zeile zu prüfen.

Die Ausführungszeit wird im Quellenbereich angezeigt.
Ausführungszeit im Bereich „Quellen“

Häufige Probleme sind schlecht optimierte Animationen, die kontinuierliches Layout und Rendering auslösen, oder kostspielige Vorgänge, die in einer enthaltenen Bibliothek verborgen sind.

Wie melde ich falsche Maßnahmen?

Wenn nicht werbebezogene Inhalte als solche gekennzeichnet wurden, ändern Sie den Code, um zu vermeiden, dass die Filterregeln übereinstimmen, oder wenden Sie sich direkt an die EasyList, um die Filterregeln zu ändern. Beachten Sie, dass die Maßnahme gegen ressourcenintensive Anzeigen keine Auswirkungen auf Frames mit Nutzergeste hat. Videos können also ausgeschlossen werden, indem Sie festlegen, dass vor dem Laden von Inhalten auf einen Wiedergabebutton geklickt werden muss. Wenn EasyList nicht mit Ihren Inhalten übereinstimmt und Chrome die Inhalte fälschlicherweise als werbebezogen klassifiziert hat, können Sie mit dieser Vorlage ein Problem mit Chrome melden. Fügen Sie beim Melden eines Problems ein erfasstes Beispiel des Berichts zur Maßnahme und eine Beispiel-URL hinzu, um das Problem zu reproduzieren.