0

我刚刚实施了GA增强型电子商务事件,用于跟踪产品点击次数。当用户点击产品缩略图时,会发送此事件。GA EC事件跟踪通常非常缓慢,导致用户体验差

此实施基于Google Analytics guide for enhanced ecomm。我还使用performance.now()添加了分析代码。一个骷髅如下:

var addProductHandler = (function() { 
    return function(ev) { 
     var t1 = performance.now(); 
     ... 
     ga('ec:addProduct', { 
      'id': SKU, 
      'position': item_position 
     }); 
     ga('ec:setAction', 'click', {list: 'Prod Reco'}); 
     ga('send', 'event', 'UX', 'click', 'Results', { 
      hitCallback: function() { 
       console.log('perf1:', (performance.now()-t1)*1000); 
       document.location = _href; 
      } 
     }); 
     ... 
    } 
})(); 

在测试过程中,我发现,如果我在一个产品缩略图点击访问该页面后不久,则事件获取〜53ms推出。这非常好,没有问题。

但是,如果我延迟点击一个更长的时间,比如〜5秒,那么它需要1-2.5秒之间的任何地方!

这低迷的响应会伤害用户engagement.Trying这个使用Chrome来分析,我发现下面:

当〜53毫秒发送成功的情况下,1个请求像下面送出:

https://www.google-analytics.com/collect?v=1&_v=j50&t=event&a=... 
status: 200 

但是,当它需要的时间越长1-2.5秒时,传输是这样的:

1 https://www.google-analytics.com/r/collect?v=1&_v=j50&a=... 
    status: 302 
2 https://stats.g.doubleclick.net/r/collect?v=1&aip=1&t=dc&_r=3&tid=UA-... 
    status: 302 
3 https://www.google.com/ads/ga-audiences?v=1&aip=1&t=sr&_r=4&tid=UA-... 
    status: 302 
4 https://www.google.co.in/ads/ga-audiences?v=1&aip=1&t=sr&_r=4&tid=UA-... 
    status: 200 

这表明,有4 HTTPS请求,第一才子3 h 302重定向,最后一个做这项工作。他们每个人都添加了他们自己的延迟(DNS /初始连接/ SSL /等待/内容下载),他们总结了1-2.5秒的延迟。只有在这4个请求完成后,才会调用hitCallback,然后开始加载点击的产品页面。

避免这种缓慢行为的任何帮助都会很大。据我了解,这种延迟不是期待或发生的事情。 (请注意,我还没有在hitCallback中引入setTimeout,因为这样只会截断超出配置值的延迟传输,从而跳过这些事件。 另请注意,在两次传输中,我都看到'gif',尽管我已经配置了传输:ga'创建'例程中的'beacon')。

回答

0

我通过纠正我设置运输为'灯塔'的方式解决了这个问题。

基于谷歌的(错误的)文档here,我已经在ga的'create'调用中设置了transport: 'beacon'。这是不正确的,因此GA没有使用“灯塔”。

正确的方法是在GA的文档在其他地方提到:

ga('set', 'transport', 'beacon'); 

还要注意的是GA不检测可用于使用运输的最佳方法。它应该使用'xhr'方法,它是使用XMLHttpRequest同步POST的,但是回落到'gif'GET(在Chrome 57.0上测试)。

要解决这个问题,我目前使用下面的JS代码:

if (window.navigator && window.navigator.sendBeacon) { 
    ga('set','transport','beacon'); 
} else if (window.XMLHttpRequest) { 
     ga('set','transport','xhr'); 
} 

在很老的浏览器,其中不支持XMLHttpRequest的,比如IE5/6,有希望GA将使用“GIF”的方法。我们不需要为他们设置“运输”。但是,我们不支持这些传统浏览器。