用户计时

本指南将介绍如何使用 analytics.js 衡量时间段。

概览

研究表明,减少网页加载时间可改善网站的整体用户体验。Google Analytics(分析)有许多功能强大的报告可自动衡量网页加载时间并生成报告。不过,您也可以衡量自定义计时信息,以便衡量网站的具体性能。

借助用户计时功能,开发者能够使用 analytics.js 库来衡量时间段。如果开发者要衡量提交 AJAX 请求和加载网页资源的延迟时间或所需时间,该功能特别有用。

实现

可以通过使用 send 命令并将 hitType 指定为 timing 来发送用户计时命中。对于 timing 命中类型,send 命令会使用以下签名:

ga('send', 'timing', [timingCategory], [timingVar], [timingValue], [timingLabel], [fieldsObject]);

用户计时字段

下表对各用户计时字段进行了概要说明:

字段名称 值类型 是否必须提供 说明
timingCategory text 用于将所有用户计时变量归类到相应逻辑组的字符串(例如 'JS Dependencies')。
timingVar text 用于标识要记录的变量的字符串(例如 'load')。
timingValue integer 向 Google Analytics(分析)报告的,以毫秒为单位的历时时间(例如 20)。
timingLabel text 可用于提高报告中显示用户计时数据灵活性的字符串(例如 'Google CDN')。

示例:

以下命令向 Google Analytics(分析)发送用户计时命中,指明当前网页加载其所有外部 JavaScript 依赖关系耗时 3549 毫秒:

ga('send', 'timing', 'JS Dependencies', 'load', 3549);

请注意,在使用所有 send 命令时,通过便捷参数传递的字段也可以通过 fieldsObject 指定。上述命令可改写为:

ga('send', {
  hitType: 'timing',
  timingCategory: 'JS Dependencies',
  timingVar: 'load',
  timingValue: 3549
});

衡量时间

在发送用户计时数据时,您可以在 timingValue 参数中指定所花费的时间(以毫秒为单位)。编写代码捕获此时间段的工作需由您自己完成。

最简单的方法是在时间段的开头创建时间戳,然后在时间段的结尾创建另一个时间戳。然后,您可以利用两个时间戳之间的差异来计算所花费的时间。

大多数新型浏览器都支持 Navigation Timing API,该 API 针对 window.performance 对象提供了一些方法,可通过高精度时间数据来衡量网页性能。

下例使用了 performance.now() 方法,该方法返回从网页最初开始加载到目前为止的时长:

// Feature detects Navigation Timing API support.
if (window.performance) {
  // Gets the number of milliseconds since page load
  // (and rounds the result since the value must be an integer).
  var timeSincePageLoad = Math.round(performance.now());

  // Sends the timing hit to Google Analytics.
  ga('send', 'timing', 'JS Dependencies', 'load', timeSincePageLoad);
}

有关采样的注意事项

Google Analytics(分析)会在处理过程中对计时命中进行采样,以确保针对此功能公平分配系统资源。

计时命中的采样率取决于系统针对相应媒体资源在前一天所接收到的网页浏览命中总数。下表简要说明了计时抽样率的确定方式。

网页浏览匹配总数(前一天) 系统最多可处理的计时匹配数
0 - 1000 100
1000 - 100000 网页浏览匹配总数的 10%
100000 - 1000000 10000
1000000+ 网页浏览匹配总数的 1%

限制所发送的命中数

为避免发送不会被处理的 Google Analytics(分析)命中,您可以使用 analytics.js,通过 sampleRatesiteSpeedSampleRate 配置选项来控制所发送命中的百分比。默认情况下,这两个字段分别设置为 100% 和 1%。您可以根据您的平均每日网页浏览量来调整这些数值,以使其更接近于 Google Analytics(分析)将会处理的计时命中数。