You need to enable JavaScript to run this app.
导航

Web/JS SDK FAQ

最近更新时间2023.12.19 16:19:01

首次发布时间2023.07.20 12:07:13

1. Web SDK数据上报策略

默认“接近实时”上报事件,SDK使用了一个队列,等待30ms,在等待时间内触发的事件会合并为一次请求进行上报,如果未达到30ms的等到时间,事件数量达到了10条话就立即进行合并为一次请求进行上报。可以通过设置max_report参数来更改条数(10是默认条数)。

2. 集成了Web SDK 配置多链接实验时,提示未安装SDK,如何处理?

多链接实验需要在初始化的时候开启如下配置: enable_ab_visual: true。

3. 集成Web/JS SDK如何查看用户的ssid?

//获取平台生成的各种ID
window.collectEvent('getToken', (res) => {
    console.log(res)
}); 
 
 window.collectEvent('getToken', (token) => {
    // token数据内容类似如下:
    // {
    //    "web_id":"6748002161499735560",
    //    "ssid":"579bc89a-bd45-4021-8314-669c35f38e3d",
    //    "user_unique_id":"xxx",
    // }
    window.collectEvent('test', {
      id: `web_id/ssid的值`
    });
});

4. web_id请求逻辑

web_id在sdk初始化即调用init方法时,会向服务器发起webid的请求(https://xxxx/webid
图片
请求参数为:app_id,当前URL,URL的referer,当前浏览器的useragent,以及user_unique_id(一般为空值),主要依赖的是appid和当前所处环境,请求会在服务端生成一个唯一的webid返回,如下图:
图片
拿到web_id后会缓存在本地,只要appid和域名不变,不手动清除缓存,都不再请求服务器获取web_id。

5. Web SDK支持那些浏览器?

只要是标准的浏览器环境,能支持原生 JavaScript(不需要 ES6 ) 就可以使用,与操作系统、平台类型、浏览器类型、浏览器版本无关。 不保证一些小众浏览器没有实现标准的 JavaScript ,导致一些属性有差异,与操作系统、平台类型、浏览器类型、浏览器版本有关。
部分功能需要相对较新的浏览器才能支持,例如批量发送需要 LocalStorage 存储,如果一些功能(例如批量发送)在版本浏览器不支持的话,SDK 不会报错,而是自动降级(使用图片发送),或者去除这个功能。

浏览器

支持说明

IE6~9

IE10~11

Chrome

Safari

Edge

FireFox

Opera

6. Web SDK的用户id存储逻辑

WebSDK初始化完成后,默认情况下,会将webid/user_unique_id存储在浏览器的localStorage中(当前页面的域名下),只要用户不手动清除浏览器的缓存,那么这个存储将会永久存在,且值不会改变。
在一些特殊的场景下,比如需要统计跨子域名(a.b.com和c.b.com)页面的信息时,可以打开SDK的cookie存储开关(具体查看SDK的功能配置)。此时,SDK会将webid/user_unique_id存储在浏览器的cookie中(默认过期时间为7天,可通过配置更改),在cookie未过期之前,这个存储值不会改变。在cookie过期后,或者用户手动清除了浏览器的cookie,那么SDK将会重新生成webid。

7. 元素曝光事件(元素的曝光事件非实验曝光)在IE浏览器无法上报

元素曝光事件不支持IE浏览器,只支持到EDGE(除了IE的其他主流浏览器都支持)。

8. Web SDK是否有采集页面崩溃的能力

没有,Web SDK只是埋点采集数据,不采集页面错误,如需要采集页面崩溃可以引导客户购买apm产品。

9. Web多页面应用集成SDK,公共属性是否每个页面都要上报?

初始化和公共属性每个页面都需要代码写一次,user_unique_id会缓存,设置一次即可。

10. Google低版本使用JS SDK报语法错如何处理?

谷歌6.x版本之前可以通过使用带core的js文件,https://lf3-data.volccdn.com/obj/data-static/log-sdk/collect/5.0/core/collect-privity-v5.1.6.js

11. 前向地址referrer为空如何排查?

正常情况下,浏览器地址栏输入页面地址打开,收藏夹打开,书签打开等方式,referrer都为空,其他情况下
(1)SDK版本是否是5.0以上;
(2)是否是SPA应用,init有没有设置spa=true;
(3)服务端请求的响应头里面对于refer的权限是否设置了禁用referrer

12. Web微前端项目,主应用和子应用分别接入不同应用(app_id不同),这种场景下有什么解决方案吗?

可以通过多实例方式解决,详情参考此文档:https://www.volcengine.com/docs/6285/112163#_3-web-js-%E5%A4%9A%E5%AE%9E%E4%BE%8B%E4%BD%BF%E7%94%A8

13. Web SDK 的reportTime和max_report参数的意义是什么?

埋点上报策略分为2种,默认max_report是10,第一种,30ms内触发的埋点数量大于10了,就直接上报;第二种,30ms内没有触发这么多,就会等待30ms后再把之前的埋点一起上报。

14. 页面停留时长「total_duration」或「duration」有什么区别?

duration是活跃时长,简单的说就是用户在实际使用的时长;
total_duration是页面打开到关闭的总时长,包含用户切换了页面没有在实际使用的时长。比如最小化、后台等,切换页面会被理解为“离开页面”这时候会上报一次close事件。

15. Web SDK圈选事件的圈选范围是什么?

圈选规则限制,当一个元素的子元素超过2层时会过滤,如果要圈选到外层元素,建议不要有超过2层子元素。

16. predefine_pageview和bav2b_page的区别?

  • predefine_pageview是Web和小程序的预置页面访问事件,移动端没有;
  • bav2b_page是全埋点页面访问事件,只要打开开关就会采集;
  • 对于Web平台,两个也有区别,bav2b_page是全埋点上报的事件,spa参数为false的情况,bav2b_page单页应用的路由切换时中也会上报,predefine_pageview只会上报页面打开的时候上报一次。spa为 true,bav2b_page和predefine_pageview是一样的,在JS SDK 5.0版本以后,bav2b_page和predefine_pageview上报是统一的。

17. Web/JS SDK接入,如果不主动上报数据,默认会采集哪些数据?

只要集成SDK,并初始化完成就会采集预置事件和属性,详细参考文档:Web预置事件及属性
如果需要采集全埋点数据,可以通过打开全埋点开关,全埋点事件说明:全埋点预置事件和属性

18. Web SDK session id生成和存储逻辑

  1. 用户首次访问页面时,SDK初始化生成sessionid,存储sessionid于sessionstorage中,同时记录生成的时间戳。
  2. 每当这个页面有事件触发(用户主动触发+SDK自动上报触发)后,则去更新sessionstorage中sessionid的时间戳。
  3. 当在同一个页面里,30分钟内没有任何操作(用户没有触发事件上报,SDK也没有自动上报任何事件),则认为sessionid过期,此时生成一个新的sessionid,并更新sessionid的时间戳。
  4. 当页面中有按钮点击打开一个新窗口,根据sessionstorage此时属于新会话,则会生成新的sessionid。
  5. 当页面关闭时,清空sessionstorage,下次再打开页面,生成新的sessionid。
  6. 在sessionid有效期内,每次事件上报都带上sessionid,作为公共参数。

19. bav2b_beat 页面心跳事件采集逻辑

页面心跳事件,分别在页面访问,滚动页面后停止500ms,离开页面时上报各上报一次,详情参考文档2.4.4章节https://www.volcengine.com/docs/6285/112163