So verbesserte Google die Anzeigenleistung mit „stale-while-revalid“

Jonathon Imperiosi
Jonathon Imperiosi

In dieser Fallstudie wird gezeigt, wie sich die Leistung von Drittanbieterressourcen verbessern lässt, um Geschäftsmesswerte zu steigern. In einer früheren Studie wurden die Kosten für zusätzliche Anzeigenlatenz gemessen. In dieser Studie wird der Wert einer Leistungsverbesserung in der Praxis veranschaulicht:

0,5%

Umsatzsteigerung für Publisher

2%

Mehr frühe Ladevorgänge von Anzeigenskripten

Quelle: Interne Daten von Google, Juni bis Juli 2019

Hintergrund

Das Google Publisher-Tag (GPT) ist das Skript für das Anzeigen-Tagging für Google Ad Manager, mit dem Displayanzeigen im Web angefordert und gerendert werden. Durch die Implementierung eines stale-while-revalidate-HTTP-Headers für GPT konnte das GPT-Team die Geschwindigkeit und Leistung von Google-Displayanzeigen für seine Publisher-Partner verbessern. Diese Technik kann auch in anderen Szenarien angewendet werden, in denen das Laden von Skripten so schnell wie möglich wichtiger ist als das Laden des neuesten Codes.

Das Problem

GPT wird als Bootstrapping-Skript (gpt.js) bereitgestellt, das eine kurze Gültigkeitsdauer (Time to Live, TTL) von 15 Minuten hat. Dank dieser kurzen TTL kann das Skript schnell aktualisiert oder zurückgesetzt werden. Nach dem Laden fordert gpt.js zusätzliche Implementierungsskripts an und lädt sie. Diese haben eine längere TTL.

Nach Ablauf der 15-minütigen TTL wird die Version von gpt.js im Cache veraltet und muss neu validiert werden. Bisher war für diesen Revalidierungsprozess eine synchrone Netzwerkanfrage erforderlich, um eine aktuelle Kopie des Skripts abzurufen. Dadurch wurde die erste Anzeigenanfrage verzögert.

Die Lösung

Das stale-while-revalidate Attribut wird vom Cache-Control Header verwendet und definiert ein zusätzliches Zeitfenster, in dem ein Cache ein veraltetes Asset verwenden kann, während das Asset asynchron neu validiert wird. So können Entwickler ein Gleichgewicht zwischen Unmittelbarkeit—sofortiges Laden von im Cache gespeicherten Inhalten—und Aktualität—Sicherstellen, dass zukünftig Aktualisierungen der im Cache gespeicherten Inhalte verwendet werden finden.

Fallstudie zu Google-Displayanzeigen

Das GPT-Team hat diesen Cache-Control-Header 2016 in die gpt.js-HTTP-Antwort eingefügt, in Erwartung der Implementierung von stale-while-revalidate in Browsern:

cache-control: private, max-age=900, stale-while-revalidate=3600

Diese Einstellung bedeutet, dass wenn gpt.js zwischen 15 und 60 Minuten nach dem vorherigen im Cache gespeicherten Wert angefordert wird, der im Cache gespeicherte Wert verwendet wird, um die Anfrage zu erfüllen, obwohl er veraltet ist. Gleichzeitig wird im Hintergrund eine Revalidierungsanfrage gestellt, um den Cache für die zukünftige Verwendung mit einem aktuellen Wert zu füllen.

Chrome hat stale-while-revalidate in Version 75 für 99% des Traffics eingeführt. Für 1% des Traffics wurde die Funktion vorübergehend deaktiviert, um die Auswirkungen zu messen. Das GPT-Team hat Messwerte für dieses 1% (die Testgruppe) sowie für eine Stichprobe von 1% des Traffics mit aktivierter Funktion (die Kontrollgruppe) erfasst, um die Effektivität von stale-while-revalidate für Anzeigenskripts zu testen. Im Laufe von zwei Wochen wurden Messwerte für 5, 2 Milliarden Google-Displayanzeigenimpressionen erfasst.Dabei wurden in der Kontrollgruppe folgende Ergebnisse beobachtet:

  • 0,3% mehr Anzeigenimpressionen
  • 0,5% mehr Umsatz
  • 2% mehr frühe Ladevorgänge von Anzeigenskripten (< 500 ms nach Beginn des Seitenladevorgangs)
  • 1,1% mehr erfolgreiche Ladevorgänge von Anzeigenskripten insgesamt
  • Quelle:
Prozentpunktänderung bei der Anzahl der Ladevorgänge für Anzeigenscripts im Vergleich zur Zeit vom Beginn des Seitenaufbaus bis zum Laden des Anzeigenscripts (ms)
Quelle: Interne Daten von Google, Juni bis Juli 2019

Wie im Diagramm zu sehen ist, sind die Ergebnisse dieses Tests auf eine Zunahme der erfolgreichen Ladevorgänge von Anzeigenskripten zurückzuführen, wobei die meisten früh im Seitenladevorgang stattgefunden haben.

`stale-while-revalidate` auf Ihrer Website implementieren

Das GPT-Team hat festgestellt, dass eine relativ kleine Änderung an HTTP-Headern mit stale-while-revalidate die Geschwindigkeit verbessern und Geschäftsmesswerte steigern kann. Weitere Informationen zur Implementierung von stale-while-revalidate auf Ihrer eigenen Website finden Sie im Artikel Keeping things fresh with stale-while-revalidate.