我有一个小型网络应用程序,我正在使用 Google Analytics 跟踪它的使用情况。该应用程序使用 CakePHP 框架,因此它被组织在 Controller 和操作中。这是我在报告中关心的内容,而不是用户看到的 URL。
因此,为了从 URL 中过滤掉不相关的内容,我使用人工构建的 URL 调用 send
pageview
命令:
var l = window.location;
ga('send', 'pageview', {
location: l.protocol + '//' + l.hostname + '/' + controller_name + '/' + action_name,
page: '/' + controller_name + '/' + action_name });
这也去除了我不关心的额外参数。
对于大多数报告(如页面浏览量、流量、事件等),它都可以正常工作,但对于站点速度则不行。
站点速度报告显示浏览器地址栏中显示的 URL(它们不同且简单得多,用户不关心我对 Controller 和操作的实现),最糟糕的是它们包含操作参数,这意味着对同一操作的多次调用在网站速度报告中被视为不同的页面。
我知道我可以在 Google Analytics 端配置过滤以跳过参数并将多个 URL“合并”为一个。
但是有没有办法让网站速度报告遵循 pageview
命令的 page
参数?
最佳答案
当您最初调用 ga('create', 'UA-XXXX-Y')
时,您创建了一个跟踪器对象。届时跟踪器对象会设置 URL、标题、屏幕尺寸、浏览器版本等。
当您随后调用 ga('send', ...)
时,您会将所有数据发送到 Google Analytics。
您假设使用特定页面数据调用 ga('send', 'pageview', ...)
也会更新跟踪器对象上的内部存储数据,但那是其实不是这样的。 (我同意这有点令人困惑。)
解决方案是在调用 send
之前更新跟踪器对象,然后正确的页面数据将用于所有后续点击。
这是一个例子:
ga('set', {
location: l.protocol + '//' + l.hostname + '/' + controller_name + '/' + action_name,
page: '/' + controller_name + '/' + action_name
});
现在你可以这样做:
ga('send', 'pageview');
一切都会正常进行。如果您发送后续事件或社交点击,它们也将使用您更新后的位置和页面值。
关于google-analytics - Google Analytics 站点速度和自定义 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25043137/