了解如何更快地加载第三方资源可以增加收入。
本案例研究重点介绍了改进第三方资源的性能如何提升业务指标。虽然之前的研究衡量了增加广告延迟的成本,但本研究展示了实际性能改进的价值。
0.5%
发布商收入提升
2%
早期广告脚本加载量增加
来源:Google 内部数据,2019 年 6 月至 7 月。
背景
Google Publisher Tag (GPT) 是 Google Ad Manager 的广告代码脚本,用于请求和呈现网页上的展示广告。通过为 GPT 实施简单的 stale-while-revalidate
HTTP 标头,GPT 团队能够提高 Google 展示广告为其发布商合作伙伴的速度和性能。相同的技术可以应用于任何其他场景,在这些场景中,尽可能快地加载脚本比加载最新代码更重要。
问题
GPT 部署为引导脚本 gpt.js
,其生存时间 (TTL) 很短,为 15 分钟。这个较短的 TTL 允许脚本快速更新或回滚。加载后,gpt.js
会请求并加载其他实现脚本,这些脚本具有较长的 TTL。
一旦 15 分钟的 TTL 过期,缓存中的 gpt.js
版本就会过期,需要重新验证。以前,这种重新验证过程涉及发出同步网络请求以获取脚本的新副本,从而增加第一个广告请求的延迟。
解决方案
stale-while-revalidate
属性由 Cache-Control
标头使用,并定义了一个额外的时间窗口,在此期间,缓存可以使用过时的资产,同时异步重新验证该资产。这有助于开发者在即时性(立即加载缓存内容)和新鲜度(确保将来使用缓存内容的更新)之间取得平衡。
Google 展示广告案例研究
GPT 团队在 2016 年在 gpt.js
HTTP 响应中添加了此 Cache-Control
标头,以预期浏览器实现 stale-while-revalidate
cache-control: private, max-age=900, stale-while-revalidate=3600
此设置意味着,如果在上次缓存值后的 15 到 60 分钟之间请求 gpt.js
,即使缓存值已过期,也将使用缓存值来满足请求。与此同时,将在后台发出重新验证请求,以使用新值填充缓存以供将来使用。
Chrome 在版本 75 中向 99% 的所有流量推出了 stale-while-revalidate
,暂时禁用 1% 的流量以衡量其影响。GPT 团队记录了来自这 1%(实验组)以及启用该功能(对照组)的 1% 流量样本的指标,以测试 stale-while-revalidate
对于广告脚本的有效性。在从 52 亿次 Google 展示广告展示样本中记录指标的 2 周时间内,对照组观察到
- 广告展示次数增加 0.3%。
- 收入增加 0.5%。
- 早期广告脚本加载量增加 2%(从页面加载开始 <500 毫秒)。
- 总体而言,广告脚本成功加载量增加 1.1%。
如上图所示,此实验的结果可归因于广告脚本成功加载量的增加,其中大部分发生在页面加载过程的早期。
在您的网站上实施 stale-while-revalidate
GPT 团队已经看到,对带有 stale-while-revalidate
的 HTTP 标头进行相对简单的更改可以提高速度并提升业务指标。查看使用 stale-while-revalidate 保持新鲜度帖子,了解有关在您自己的网站上实施 stale-while-revalidate
的更多信息。