会话超时用的默认三十分钟,一个看长视频的用户中途没点任何按钮,回来继续看,报表里被切成五个会话,平均会话时长只有六分钟。第一次遇到会往复杂处想,其实漏掉的多是个小前提。

setInterval(() => {
  if (!video.paused) gtag('event', 'video_progress', { non_interaction: true });
}, 5 * 60 * 1000);

会话按事件间隔计算,超过三十分钟没有新事件就结束,下一次交互再开一个新会话。视频播放、挂机阅读这类场景没有点击,很容易被反复切断。这一点先确认清楚,后面就不用反复试。

碰到「会话超时拆分」这类问题,我习惯先把当前配置原样备份一份,改坏了立刻换回来,不用现场推。临时改动用注释写上日期和原因,过两周自己都记不清为什么这么写。

具体做法是,播放器每隔几分钟发一次心跳事件,把会话续上;根据业务把会话超时调长,比如调到两小时;报表同时看互动会话,别只用会话数判断内容吸引力。

改完照着核一遍,同一次观看在报表里只算一个会话,平均会话时长回到接近实际观看时长。

作者 9823189