从打开一个Sitecore网站的第一个页面(可能是首页,也可能是任何一个页面)开始,Sitecore会在session中创建一个“Interaction”的对象,在session end时,这个对象信息会被写入到xDB中,对应"Interactions"中的一条
这条信息记录了用户此次与网站交互的各种信息:
- 开始时间
- 结束时间(最后一个页面的打开时间,这也是为啥最后一个页面duration是0的另外一个表现)
- 存储时间(写入xDB的时间,通常就是session结束的时间)
- 用户ID
- 浏览器/操作系统/语言/地点/显示屏等等从client端得到的信息
- 浏览了哪些页面(存入了一个数组Pages,按浏览开始的时间顺序)
在上面的Pages这个数组中,每一个对象存储了用户浏览这个页面的信息:
- 开始时间
- duration(在这个页面上呆了多长时间,以毫秒为单位)
- Url
- 其他信息等等
奇怪的是最后一个页面的duration总是0(到目前看是这样)
感觉Sitecore是从后端计算的duration,大体思路是当一个页面开始,用这个页面开始时间减去上一个页面的开始时间,就得到了上一个页面的duration。
而最后一个页面没有下一个页面,所以也无法计算了。
这样做有一定道理,比如打开最后一个页面后,没有任何操作(比如吃午饭去了等等),等session结束(通常20分钟),总不能认为用户在最后一个页面呆了20分钟。。。
但是如何得到最后一个页面的真正的duration或尽可能相似的呢?有几个思路s:
- javascript从前端计算,然后传回后端, 难度系数5颗星,准确系数5颗星
- 按session结束时间算,难度系数1颗星,准确系数1颗星
- 按最后一个页面的最后一个event(如果有的话)算,难度系数3颗星,准确系数3颗星
转载于:https://www.cnblogs.com/JoeHou/p/9012540.html