documentUnloading (網頁SDK)
documentUnloading屬性可讓您使用瀏覽器的sendBeacon方法將資料傳送至Adobe。 此方法屬於瀏覽器的Web API,而非JavaScript語言本身。 如果典型的請求花費太長時間,瀏覽器可以取消請求。 您可以指示Web SDK使用sendBeacon,在您離開頁面後,要求會在背景執行。 啟用此屬性可協助防止解除安裝時瀏覽器取消資料請求。
Web SDK僅在建立訪客身分之後才使用sendBeacon。 在建立身分之前(例如,在新訪客的第一個事件上),Web SDK會使用fetch將事件傳送到Edge Network,以便在回應中接收身分。 從版本2.36.1開始,這fetch個要求使用keepalive選項,即使訪客離開頁面,瀏覽器也會完成傳送要求。
數個瀏覽器對可與sendBeacon同時傳送的資料量設下64 KB的限制。 相同的限制適用於使用keepalive的fetch要求。 如果瀏覽器因裝載太大而拒絕事件,Web SDK會退回使用其一般傳輸方法。 即使指定的瀏覽器允許較大的裝載,Adobe資料收集伺服器仍會將裝載截斷至64 KB。
執行sendEvent命令時設定documentUnloading布林值。 其預設值為false。 如果您想要使用sendBeacon方法將資料傳送至Adobe,請將此屬性設為true。
alloy("sendEvent", {
"xdm": adobeDataLayer.getState(reference),
"documentUnloading": true
});
驗證與documentUnloading一併傳送的事件 validate
如果頁面在sendBeacon請求完成之前導覽離開,即使瀏覽器繼續傳送,Chrome開發人員工具也可以將請求(型別ping)顯示為(已取消)。 使用包含keepalive的fetch傳送的要求可以相同方式顯示為已取消。 此標籤本身無法建立資料是否遺失的問題。
Web SDK偵錯記錄檔也無法確認傳送。 瀏覽器不會傳回sendBeacon要求的回應,所以記錄僅顯示Web SDK使用sendBeacon傳送要求。
在重新產生導覽之前開啟檢查工具。 尋找已擷取的伺服器回應,或在連線的Edge Trace/Assurance工作階段中,尋找Edge Network的傳入請求。 請參閱共用檢查工作流程及其證據限制的中止的要求。 Edge回執確認本身不會建立下游處理。
事件可能遺失時 data-loss
當頁面取消載入時,documentUnloading屬性無法協助處理Web SDK尚未傳送的事件。 例如,Web SDK會在同意為pending (請參閱defaultConsent)時保留事件,或是在等待處理中的身分要求完成時保留事件。 在第二個案例中,偵錯記錄檔顯示Delaying request while retrieving ECID from server.