Google 如何透過過時的重新驗證方式改善廣告成效

並瞭解如何加快第三方資源載入速度,進而增加收益。

Jonathon Imperiosi
Jonathon Imperiosi

這份個案研究著重探討改善第三方資源成效對業務指標的助益。先前的研究是評估廣告延遲載入成本所導致的成本,但這項研究呈現出實際成效改善所帶來的價值:

0.5%

發布商收益升幅

2%

廣告指令碼早期載入量增加

資料來源:Google 內部資料,2019 年 6 月至 7 月。

背景

Google 發布商廣告代碼 (GPT) 是 Google Ad Manager 的廣告代碼指令碼,可請求並顯示多媒體廣告。為發布商合作夥伴導入簡單的 stale-while-revalidate HTTP 標頭,GPT 團隊得以提升 Google 多媒體廣告的速度和成效。同樣的技巧也適用於其他情境,以盡快載入指令碼比載入最新程式碼更為重要。

問題

GPT 是以開機程序指令碼 gpt.js 部署,給予 15 分鐘的短暫存留時間 (TTL)。這種較短的存留時間可讓指令碼快速更新或復原。載入之後,gpt.js 會要求並載入其他實作指令碼,且存留時間較長。

一旦 15 分鐘的存留時間到期,快取中的 gpt.js 版本就會過時,必須重新驗證。在過去,這項重新驗證程序需要提出同步網路要求來擷取新的指令碼副本,因此會增加第一個廣告請求的延遲。

解決方案

Cache-Control 標頭會使用 stale-while-revalidate 屬性,並定義額外的時間長度。這段時間內,快取可以運用過時的素材資源,同時以非同步的方式重新驗證資產。如此一來,開發人員就能立即載入快取內容,並在兩者之間取得平衡。 時效性:確保日後對快取內容的更新內容

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%。
,瞭解如何調查及移除這項存取權。
廣告指令碼載入次數與從載入網頁開始到載入廣告指令碼的時間,兩者的變化百分比 (毫秒)
資料來源:Google 內部資料,2019 年 6 月至 7 月。

如上方圖表所示,這項實驗的結果可能會歸因於成功的廣告指令碼載入次數增加,而且大多發生在網頁載入初期。

在網站上導入過時內容重新驗證

GPT 團隊已發現,使用 stale-while-revalidate 簡單地變更 HTTP 標頭,即可提升速度及提升業務指標。請參閱「使用過時版本重新驗證」一文,進一步瞭解如何在網站上導入 stale-while-revalidate

KahicaUnsplash 提供