В этом тематическом исследовании показано, как повышение производительности сторонних ресурсов может улучшить бизнес-показатели. В то время как в предыдущем исследовании измерялась стоимость увеличения задержки при показе рекламы, в данном исследовании демонстрируется ценность реального повышения производительности:
0,5 %
Рост доходов издателей
2 %
Увеличение количества загрузок ранних рекламных скриптов.
Источник: Внутренние данные Google, июнь-июль 2019 г.
Фон
Google Publisher Tag (GPT) — это скрипт для разметки рекламы в Google Ad Manager, который запрашивает и отображает контекстную рекламу в интернете. Внедрив HTTP-заголовок stale-while-revalidate для GPT, команда разработчиков GPT смогла улучшить скорость и производительность контекстной рекламы Google для своих партнеров-издателей. Этот же метод можно применить в любом другом сценарии, где максимально быстрая загрузка скриптов важнее, чем загрузка самого актуального кода.
Проблема
GPT развертывается в виде скрипта инициализации, gpt.js , которому задано короткое время жизни (TTL) — 15 минут. Такое короткое время жизни позволяет быстро обновлять или откатывать скрипт. После загрузки gpt.js запрашивает и загружает дополнительные скрипты реализации, которые имеют более длительное время жизни.
После истечения 15-минутного срока действия (TTL) версия gpt.js в кэше устаревает и требует повторной проверки. Ранее этот процесс повторной проверки включал синхронный сетевой запрос для получения свежей копии скрипта, что увеличивало задержку при первом запросе рекламы.
Решение
Атрибут stale-while-revalidate используется заголовком Cache-Control и определяет дополнительный временной интервал, в течение которого кэш может использовать устаревший ресурс, пока он асинхронно проходит повторную проверку. Это помогает разработчикам найти баланс между оперативностью — немедленной загрузкой кэшированного контента — и актуальностью — обеспечением использования обновлений кэшированного контента в будущем .
Пример успешного использования контекстной рекламы Google.
Команда GPT добавила заголовок Cache-Control в HTTP-ответ gpt.js в 2016 году, предвидя внедрение браузерами механизма stale-while-revalidate :
cache-control: private, max-age=900, stale-while-revalidate=3600
Эта настройка означает, что если запрос к gpt.js поступает через 15–60 минут после предыдущего кэшированного значения, то для выполнения запроса будет использовано кэшированное значение, даже если оно устарело. Одновременно в фоновом режиме будет выполнен запрос на повторную проверку, чтобы заполнить кэш свежим значением для дальнейшего использования.
В Chrome в версии 75 stale-while-revalidate была внедрена для 99% всего трафика, при этом 1% трафика временно отключил эту функцию для оценки её влияния. Команда GPT регистрировала метрики как для этого 1% (экспериментальная группа), так и для 1% выборки трафика с включенной функцией (контрольная группа), чтобы проверить эффективность функции stale-while-revalidate для рекламных скриптов. В течение 2 недель сбора метрик на выборке из 5,2 миллиарда показов контекстной рекламы Google контрольная группа наблюдала следующее:
- Увеличение количества показов рекламы на 0,3%.
- Рост выручки на 0,5%.
- Увеличение количества загрузок рекламных скриптов на ранних этапах на 2% (<500 мс с момента начала загрузки страницы).
- Общее увеличение количества успешных загрузок рекламных скриптов на 1,1%.
Как показано на диаграмме, результаты этого эксперимента можно объяснить увеличением числа успешных загрузок рекламного скрипта, причем большинство из них происходит на ранних этапах загрузки страницы.
Внедрите механизм проверки актуальности данных при повторной валидации (stale-while-revalidate) на вашем сайте.
Команда GPT обнаружила, что внесение относительно небольших изменений в HTTP-заголовки с помощью stale-while-revalidate может повысить скорость и улучшить бизнес-показатели. Подробнее о внедрении stale-while-revalidate на вашем сайте можно узнать в статье «Поддержание актуальности с помощью stale-while-revalidate» .