Jak Google poprawiło skuteczność reklam dzięki funkcji nieaktualnej weryfikacji w trakcie ponownej weryfikacji

Jonathon Imperiosi
Jonathon Imperiosi

To studium przypadku pokazuje, jak poprawa wydajności zasobów innych firm może zwiększyć skuteczność firmy. Poprzednie badanie mierzyło koszt dodatkowego opóźnienia reklam, a to badanie pokazuje wartość poprawy wydajności w rzeczywistych warunkach:

0,5%

Wzrost przychodów wydawców

2%

Większa liczba wczesnych załadowań skryptu reklamy

Źródło: wewnętrzne dane Google, czerwiec–lipiec 2019 r.

Tło

Tag wydawcy Google (GPT) to skrypt tagowania reklam w Google Ad Managerze, który wysyła żądania reklam displayowych w internecie i je renderuje. Wdrażając nagłówek HTTP stale-while-revalidate w GPT, zespół GPT zdołał zwiększyć szybkość i skuteczność reklam displayowych Google u partnerów wydawców. Tę samą technikę można zastosować w każdym innym przypadku, w którym szybsze wczytywanie skryptów jest ważniejsze niż wczytywanie najnowszego kodu.

Problem

GPT jest wdrażany jako skrypt rozruchowy gpt.js, który ma krótki czas życia (TTL) wynoszący 15 minut. Krótki czas TTL umożliwia szybkie zaktualizowanie lub wycofanie skryptu. Po wczytaniu gpt.js wysyła żądania i wczytuje dodatkowe skrypty implementacyjne, które mają dłuższy czas życia.

Po upływie 15 minut wersja gpt.js w pamięci podręcznej staje się nieaktualna i wymaga ponownej weryfikacji. Wcześniej proces ponownej weryfikacji obejmował wysłanie synchronicznego żądania sieciowego w celu pobrania nowej kopii skryptu, co powodowało opóźnienie pierwszego żądania reklamy.

Rozwiązanie

Atrybut stale-while-revalidate jest używany przez nagłówek Cache-Control i określa dodatkowe okno czasowe, w którym pamięć podręczna może używać nieaktualnego zasobu, podczas gdy jest on ponownie weryfikowany asynchronicznie. Pomaga to deweloperom zachować równowagę między szybkością działania – natychmiastowym wczytywaniem treści z pamięci podręcznej – a aktualnością – zapewnieniem, że w przyszłości będą używane aktualizacje treści z pamięci podręcznej.

Studium przypadku dotyczące reklam displayowych Google

Zespół GPT dodał ten nagłówek Cache-Control do odpowiedzi HTTP gpt.js w 2016 roku, przewidując wdrożenie przez przeglądarki funkcji stale-while-revalidate:

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

To ustawienie oznacza, że jeśli gpt.js zostanie wysłane w ciągu 15–60 minut od poprzedniej wartości w pamięci podręcznej, do realizacji żądania zostanie użyta wartość z pamięci podręcznej, nawet jeśli jest nieaktualna. Jednocześnie w tle zostanie wysłane żądanie ponownej weryfikacji, aby wypełnić pamięć podręczną nową wartością do wykorzystania w przyszłości.

Chrome wprowadził stale-while-revalidate w wersji 75 dla 99% ruchu. W przypadku 1% ruchu funkcja została tymczasowo wyłączona, aby można było zmierzyć jej wpływ. Zespół GPT rejestrował dane z tej 1% (grupy eksperymentalnej) oraz z 1% próbki ruchu z włączoną funkcją (grupy kontrolnej), aby przetestować skuteczność stale-while-revalidate w przypadku skryptów reklam. W ciągu 2 tygodni, w których rejestrowano dane z próbki 5,2 mld wyświetleń reklam displayowych Google, w grupie kontrolnej zaobserwowano:

  • Wzrost liczby wyświetleń reklam o 0,3%.
  • wzrost przychodów o 0,5%,
  • Wzrost o 2% wczesnego wczytywania skryptu reklamy (w czasie krótszym niż 500 ms od rozpoczęcia wczytywania strony).
  • Ogólny wzrost liczby udanych wczytań skryptów reklamowych o 1,1%.
Zmiana w punktach procentowych liczby wczytań skryptu reklamy w porównaniu z czasem od rozpoczęcia wczytywania strony do wczytania skryptu reklamy (ms)
Źródło: wewnętrzne dane Google, czerwiec–lipiec 2019 r.

Jak widać na wykresie, wyniki tego eksperymentu można przypisać wzrostowi liczby udanych wczytań skryptu reklamy, przy czym większość z nich nastąpiła na początku procesu wczytywania strony.

Wdrażanie w witrynie strategii „nieaktualne podczas ponownej weryfikacji”

Zespół GPT zauważył, że wprowadzenie stosunkowo niewielkiej zmiany w nagłówkach HTTP z użyciem parametru stale-while-revalidate może zwiększyć szybkość i poprawić wskaźniki biznesowe. Więcej informacji o wdrażaniu stale-while-revalidate we własnej witrynie znajdziesz w artykule Keeping things fresh with stale-while-revalidate (w języku angielskim).