如需从概念上了解用户范围和会话范围,包括 Google Analytics 如何根据不活动情况来定义和严格限定会话,请参阅维度和指标:关于 Google Analytics 会话以及流量来源维度的范围指南。
本指南介绍了开发者面临的特定挑战,以及用于管理会话配置和被动跟踪的最佳实践。
将网页级维度与会话指标配对
最常见的报告细微差别之一是,当您将网页级范围的维度(例如网页路径和屏幕类)与会话级“会话数”指标搭配使用时,就会出现这种情况。
会话和视图定义
会话数是指指定网页路径至少被加载一次的唯一时间段数。
浏览次数(网页浏览量)是指网页路径被加载的总次数。
示例
假设某个会话的用户导航路径如下:/home → /products → /home → 退出
如果这是唯一一个会话,则配置了网页路径和屏幕类以及会话数或浏览次数指标的报告会显示:
| 网页路径 | 会话 | 观看次数 |
|---|---|---|
/home |
1 | 2 |
/products |
1 | 1 |
| 总数(Google Analytics 去重后) | 1 | 3 |
如果您对这些行求和,会得到 2 个会话,但实际的媒体资源总数经过去重后为 1。
自定义规则
- 具有网页路径的会话是指至少访问过该路径一次的唯一身份会话。
- 包含着陆页的会话是指从相应路径开始的唯一会话。如需查看着陆流量,请始终使用着陆页 + 查询字符串,而不是包含网页路径的会话。
- 观看次数始终统计总加载频次。
面向开发者和分析师的最佳实践
- 保持范围一致:如果您想了解会话效果,请勿将用户级范围的流量维度(例如“带来用户首次互动的默认渠道组”)与会话级范围的指标(例如“平均会话时长”)混用。
- 在 DebugView 中验证
session_start:在质量保证和验证阶段,使用 Google Analytics DebugView 等标准调试工具确认session_start在会话开始时是否正确触发。
管理会话超时的最佳实践
Google Analytics 会话的默认时长为 30 分钟。
我们不建议您实现自定义代码来定期“ping”Google Analytics,以防止因不活动而超时。如果您人为地夸大会议指标,就会扭曲用户行为数据。请改用内置的 Google Analytics 功能或以有意义的互动事件为目标,以提供更简洁的解决方案。
为什么笼统的“keep-alive”ping 是不良做法
- 核心指标失真:如果用户离开自己的标签页,则确实处于非活动状态。如果您强制会话保持打开状态,系统会创建“僵尸会话”,从而虚假地提高平均会话时长。这会掩盖用户失去兴趣或放弃访问您网站的真实时间点。
- 对感兴趣的会话数的影响:Google Analytics 将感兴趣的会话定义为持续时间超过 10 秒、包含至少 2 次网页浏览或触发关键事件(以前称为转化事件)的会话。如果您人为地保持会话处于打开状态,则会使会话看起来处于感兴趣的状态,从而提高感兴趣的会话占比。
- 数据膨胀和费用:如果您不断触发空白的后台 ping 事件,则会增加事件数量噪音,并且如果您将 Google Analytics 数据导出到 BigQuery,还会增加数据仓库费用。
何时跟踪被动互动(以及如何跟踪)
在某些正当情况下,用户会积极参与内容互动,但不会触发标准的 Google Analytics 互动事件(例如点击或网页更改)。在这些情况下,请捕获有意义的用户发起的进度事件,而不是通用的 keep-alive ping:
- 长视频内容:观看时长为 45 分钟的嵌入式视频的用户会保持被动状态超过 30 分钟,从而面临会话过期的风险。
- 深度分析文章:用户可能花费 40 分钟来阅读技术指南,缓慢滚动但未触发任何导航操作。
- 互动式 Web 应用:监控实时动态、股票行情或数据信息中心的用户无需点击即可被动地获取信息。
如果用户最小化浏览器窗口或切换标签页,则必须停止后台 ping。
代码示例:可感知可见性的事件 ping
以下 JavaScript 模式演示了如何跟踪被动互动并尊重标签页可见性。根据您的具体使用情形(例如视频或长篇文章的典型时长),调整跟踪间隔和参数值(例如 5 分钟或 300,000 毫秒):
const TRACKING_INTERVAL_MILLIS = 5 * 60 * 1000;
let engagementInterval;
function startEngagementTracking() {
// Prevent duplicate intervals if tab becomes visible
if (engagementInterval) return;
engagementInterval = setInterval(() => {
gtag('event', 'passive_engagement', {
'engagement_time_msec': TRACKING_INTERVAL_MILLIS
});
}, TRACKING_INTERVAL_MILLIS);
}
function stopEngagementTracking() {
if (engagementInterval) {
clearInterval(engagementInterval);
engagementInterval = null;
}
}
// Start tracking initially if the page is visible
if (!document.hidden) {
startEngagementTracking();
}
// Stop tracking when tab is hidden, resume when visible
document.addEventListener('visibilitychange', () => {
if (document.hidden) {
stopEngagementTracking();
} else {
startEngagementTracking();
}
});
Google Analytics 增强型衡量与自定义跟踪
Google Analytics 具有增强型衡量功能,可自动处理一些开箱即用的被动跟踪场景,但也有特定的限制。
| 互动方式 | 是否由增强型衡量功能处理? | 要求 / 待办事项 |
|---|---|---|
| YouTube 视频嵌入 | 是 | 在 10%、25%、50% 和 75% 处自动触发 video_start、video_complete 和 video_progress 里程碑(需要启用 JS API 支持)。 |
| 非 YouTube 视频 (HTML5、Vimeo) | 否 | 需要自定义实现。使用 gtag.js 以编程方式触发事件,或使用 Google 跟踪代码管理器 (GTM) 管理触发器。 |
| 标准网页滚动 | 部分 | scroll 事件仅在用户到达网页的 90% 标记处时触发。 |
| 增量朗读进度 | 否 | 以编程方式或在 GTM 中停用默认的 Google Analytics 滚动跟踪,并实现自定义滚动阈值(例如 25%、50%、75%)。 |
最简洁的替代方案:调整 Google Analytics 会话超时时限
如果您的网站自然而然地以长篇内容、视频课程或持续应用使用为中心,则无需注入自定义脚本 hack。您可以在 Google Analytics 界面中调整默认的 30 分钟阈值,最长可调整为 7 小时 55 分钟。如需查看相关说明,请参阅调整会话超时时间。