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

瞭解如何更快載入第三方資源將收益提升。

Jonathon Imperiosi
Jonathon Imperiosi

本個案研究著重說明改善第三方資源成效如何提升業務指標。先前的研究評估增加的廣告延遲費用後,這項研究顯示實際改善成效的重要性:

0.5%

發布商收益升幅

2%

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

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

背景

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

問題所在

GPT 是以啟動指令碼 (gpt.js) 的形式部署,這個指令碼的存留時間 (TTL) 較為縮短 15 分鐘。這個較短的存留時間能讓指令碼迅速更新或復原。載入後,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

這項設定表示,如果在前一個快取值之後,要求 gpt.js 的時間是在 15 至 60 分鐘之間,則即使要求已過時,系統還是會使用快取的值執行該要求。同時,系統會在背景發出重新驗證要求,以新的值填入快取,以供日後使用。

Chrome 在 75 至 99% 的流量中推出 stale-while-revalidate,讓 1% 的流量暫時停用,藉此評估這項功能的影響。GPT 團隊記錄了這個 1% (實驗組) 的指標,以及 1% 的流量樣本 (已啟用此功能),以便測試廣告指令碼的「stale-while-revalidate」成效。在為期 2 週的指標中 (樣本數為 52 億次 Google 多媒體廣告曝光),控制組觀察到:

  • 廣告曝光增加 0.3%。
  • 收益增加 0.5%。
  • 廣告指令碼早期載入後的 2% (從載入網頁開始算起,不到 500 毫秒)。
  • 成功的廣告指令碼載入量提升 1.1%。
廣告指令碼載入次數與從載入網頁開始到廣告指令碼載入的時間 (毫秒) 比較的百分比點變化
資料來源:Google 內部資料,2019 年 6 月至 7 月。

如上圖所示,這項實驗的結果可歸因於成功載入的廣告指令碼,而大部分發生在網頁載入初期。

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

GPT 團隊已發現,使用 stale-while-revalidate 稍微變更 HTTP 標頭,就能加快速度並提高業務指標。如要進一步瞭解如何在網站上導入 stale-while-revalidate,請參閱「更新過時的過時內容」一文。

相片來源:Kahica (Unsplash 上)