documentUnloading (Web 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。

IMPORTANT
documentUnloading属性与renderDecisions属性不兼容。 避免同时将两个属性设置为true。
alloy("sendEvent", {
  "xdm": adobeDataLayer.getState(reference),
  "documentUnloading": true
});

验证与documentUnloading一起发送的事件 validate

如果页面在sendBeacon请求完成之前离开,Chrome开发人员工具可以将请求(类型ping)显示为​(已取消),即使浏览器继续发送该请求也是如此。 使用带keepalive的fetch发送的请求可以以相同的方式显示为已取消。 仅此标签不能确定数据是否丢失。

Web SDK调试日志也无法确认投放。 浏览器不返回sendBeacon请求的响应,因此日志仅显示Web SDK使用sendBeacon发送了请求。

在再现导航之前打开检查工具。 查找捕获的服务器响应,或者在连接的Edge跟踪/Assurance会话中,查找Edge Network上的传入请求。 有关共享检查工作流及其证据限制,请参阅已中止的请求。 确认Edge接收本身不会建立下游处理。

事件可能丢失时 data-loss

在卸载页面时,documentUnloading属性不能帮助处理Web SDK尚未发送的事件。 例如,Web SDK在同意为pending (请参阅defaultConsent)时或等待正在进行的身份请求完成时保留事件。 在第二种情况下,调试日志显示Delaying request while retrieving ECID from server.

使用Web SDK标记扩展卸载文档

使用Web SDK标记扩展配置 发送事件 操作时,文档将卸载​复选框可用。

recommendation-more-help
experience-platform-help-collection