將 Google 發布商廣告代碼 (GPT) 程式庫整合至網站,在許多方面與整合任何其他第三方指令碼相同。不過,使用 GPT 時有幾個獨特考量,請務必留意,才能盡量減少對網站效能的影響,充分運用廣告空間。畢竟廣告速度很重要。
以下各節將說明整合時的最佳做法。
從官方來源載入 GPT
為確保您能使用最新功能和隱私權防護措施,請務必透過下表列出的網址,向官方來源要求 GPT 程式庫。使用的網址取決於您是否打算手動啟用受限制的廣告 (LTD) 模式。
| 整合類型 | 指令碼標記 |
|---|---|
| 標準 包括整合歐洲 IAB 資訊公開和同意聲明架構的發布商。 |
<script src="https://securepubads.g.doubleclick.net/tag/js/gpt.js" crossorigin="anonymous" async></script> |
| 手動啟用受限制的廣告 如要手動啟用受限制的廣告 (LTD)。 |
<script src="https://pagead2.googlesyndication.com/tag/js/gpt.js" async></script> |
受限制的廣告 (LTD) 模式可讓 GPT 放送廣告,但無法存取用戶端儲存空間 (例如 Cookie 或本機 ID)。您可以透過下列兩種方式啟用受限制的廣告:
標準 (自動):同意聲明管理供應商 (CMP) 會通知 GPT 使用者未同意存取儲存空間,通常是透過 IAB 資訊公開和同意聲明架構第 2.0 版信號。如果您使用 Google 認證的 CMP 管理使用者同意聲明,GPT 會根據使用者的偏好設定,自動進入受限制的廣告模式。
- 網址:從標準網址 (doubleclick.net) 載入 GPT。
- 無須手動採取行動:使用 CMP 時,不必手動呼叫
setPrivacySettings({limitedAds: true}),因為程式庫會自動處理信號。
手動:明確呼叫 GPT API 來請求受限制的廣告。
- 網址:如果您打算使用
googletag.pubads().setPrivacySettings({limitedAds: true})API 手動啟用受限制的廣告,必須從受限制的廣告網址googlesyndication.com載入 GPT。 - 原因:從
googlesyndication.com網域載入 GPT 時,系統會預設提供額外防護措施,避免存取用戶端儲存空間。 - 設定錯誤的後果:如果 GPT 是從標準網址載入,且呼叫了手動 API,系統會忽略啟用受限制廣告的請求,並在發布商控制台中記錄警告。
- 網址:如果您打算使用
請勿放送 GPT 的快取版本
請勿從自有伺服器提供 gpt.js、pubads_impl.js 或任何載入的程式庫,或從非官方來源載入。
使用本機快取的 GPT 程式庫版本可能無法在新版瀏覽器或作業系統中正常運作,也不一定可以更新功能和改善項目。舊版 GPT 程式庫隨時可能停止運作,如果廣告停止向代碼放送,可能會導致廣告收益損失。
這也適用於服務工作人員。如果您使用 Service Worker 快取或修改來自網站的 HTTP 要求回應,請在處理 gpt.js 的要求時使用僅限網路策略,以便擷取最新版本。
提早載入 GPT
GPT 程式庫 (gpt.js) 僅包含載入廣告所需的一小部分程式碼。大部分程式碼都包含在個別檔案 (例如 pubads_impl_XX.js) 中,並由 gpt.js 視需要載入。
提早載入核心 GPT 程式庫,這些依附指令碼也能提早載入。這樣做可避免擷取這些指令碼 (如果未快取) 時產生額外延遲,並加快廣告載入速度。上述所有做法都有助於縮短首次廣告的算繪時間,進而提高廣告的可視度。
在適當時機使用預先載入
有時您可能無法直接控制 GPT 的載入時間或方式。舉例來說,使用第三方廣告指令碼代表您載入 GPT 時,在這種情況下,預先載入 gpt.js 的要求可能較為合適。預先載入要求會指示瀏覽器立即下載指定資產,這類資產對網頁載入作業至關重要。如果指定的資產是 JavaScript 檔案,系統會立即擷取指令碼內容,但會延後執行,直到需要指令碼為止。
標準整合的預先載入要求範例
<link rel="preload" href="https://securepubads.g.doubleclick.net/tag/js/gpt.js" as="script">
受限制的廣告整合預先載入請求範例
<link rel="preload" href="https://pagead2.googlesyndication.com/tag/js/gpt.js" as="script">
使用 fetchpriority 優先載入指令碼
您可以使用 fetchpriority 屬性,向瀏覽器發出信號,指出擷取 GPT 資源的相對優先順序。根據預設,gpt.js 會自動要求其核心導入指令碼 (pubads_impl.js) 和 Google 隱私權與訊息指令碼,藉此fetchpriority="high"最佳化網路排程,並縮短廣告載入延遲時間。提高優先順序可能會影響網頁上其他資源的載入,以及Core Web Vitals指標。如要盡量減少延遲對 fetchpriority 設為「高」的影響,建議直接開啟 gpt.js。
如要優先擷取 gpt.js 載入器指令碼本身 (或設定 pubads_impl.js 和 Google 隱私權與訊息指令碼的優先順序),可以直接在 gpt.js <script> 代碼中加入 fetchpriority 屬性:
<script async src="https://securepubads.g.doubleclick.net/tag/js/gpt.js" fetchpriority="high"></script>
在 gpt.js 載入器 <script> 標記中指定 fetchpriority 屬性時,動態插入的實作指令碼和 Google 隱私權與訊息指令碼會自動沿用指定的 fetchpriority 值 (例如 "high"、"low" 或 "auto")。
在預先轉譯的網頁上使用 GPT
預先算繪會指示瀏覽器預先下載並算繪使用者尚未要求,但可能造訪的網頁。在預先算繪的網頁上載入時,GPT 程式庫只會在網頁顯示時請求廣告。
靜態載入 GPT
請勿動態將 GPT 程式庫插入網頁,或從外部指令碼載入。請改為在網頁的 <head> 中靜態載入程式庫,如「開始使用 Google 發布商廣告代碼」一文所示。這樣一來,其他資源就不會延遲擷取及載入 GPT 程式庫,進而延遲載入廣告。
詳情請參閱 Publisher Ads Audits for Lighthouse 的靜態載入廣告指令碼稽核說明文件。
非同步載入 GPT
在指令碼標記定義中加入 async 關鍵字,如「開始使用 Google 發布商廣告代碼」一文所示。這會指示瀏覽器平行載入 GPT 程式庫和其他資源和網頁內容,而不是等到指令碼載入完成才執行。
詳情請參閱 Publisher Ads Audits for Lighthouse 的非同步載入廣告代碼稽核說明文件。
安全載入 GPT
請一律透過 HTTPS 載入 GPT 程式庫,如「開始使用 Google 發布商廣告代碼」一文所示。這不僅可為使用者提供更完善的安全性,也能提升效能。由於 GPT 發出的廣告請求一律使用 HTTPS,透過 HTTPS 載入程式庫,可確保瀏覽器只需針對所有廣告放送相關請求開啟 1 個連線。
詳情請參閱 Publisher Ads Audits for Lighthouse 的「透過 HTTPS 載入廣告代碼」和「從建議的主機載入 GPT」稽核說明文件。
提供良好的網頁效能
本指南中的最佳做法主要著重於最佳化 GPT 整合,但許多其他因素也會影響網頁的整體成效。變更網站時 (尤其是根據廣泛建議進行變更,例如本指南中的建議),請務必評估這些變更對網頁各方面成效的影響。建議您定期執行 Lighthouse 和 Publisher Ads Audits for Lighthouse 等工具,找出並解決效能問題,同時為網站找出適當的最佳化平衡點。