Google Analytics 4实战指南——(2025)

⌘K
  1. 主页
  2. 文档
  3. Google Analytics 4实战指南——(...
  4. 第1章 Google Analytics 4基础知...
  5. 1.6、 GA4跟踪和数据传输原理

1.6、 GA4跟踪和数据传输原理

GA4的跟踪原理:页面标签技术

页面标签技术(Tagging Technology)是一种从访客浏览器端收集数据的技术,通常是在网页或应用程序中嵌入小段标签(也可以成为“代码”)以收集、传递和管理数据的技术。

这是目前最主流的方法,如Google Analytics 4、Adobe Analytics、百度统计、神策都是采用这种方法。

通过在网页中嵌入一段Google Analytics 4 的JS代码,然后这段JS代码会收集相关信息通过1像素的gif图片来发送相关的信息给Google的服务器,以完成数据统计。

 

GA4数据传输方式

GA4发送给服务器的请求有如下参数:

详细的参数解释请看:Google Analytics 4 中传递参数解析

Google Analytics 4中实际是有3种发送数据的方式的,分别为:

  • Image Beacons (GIF请求)
  • XHR (XMLHttpRequest)
  • Navigator.sendBeacon

Image Beacons

Image Beacons,中文叫GIF请求,这是最基本的传输方法,通过向Google Analytics 4服务器发送一个1×1像素的透明GIF图像来传输数据。每个页面浏览或事件触发都会生成一个包含数据的URL,这个URL指向Google的收集服务器。

可以在浏览器中的Network找到包含collect的请求,发送的类型是GET,注意Type是gif,表示这个就是虚拟像素:

Google Analytics的数据传输的3种类型

 

 

请求的链接就是要传递的信息。

  • 优点: 简单且广泛兼容,几乎所有浏览器都支持GIF图片请求,即使在JavaScript被禁用的情况下也能工作
  • 缺点: 由于每个数据点需要单独的HTTP请求,这可能会影响页面加载速度,特别是在大量数据传输时;另外在离开页面时可能无法发送数据,因为依赖于页面加载状态。

XHR

XHR的全称是 XMLHttpRequest,这是使用浏览器的XMLHttpRequest对象(或现代的Fetch API),GA4可以发送后台的异步请求来传输数据,这种方法允许在不重新加载页面的情况下发送数据,提高了性能。

可以在浏览器中的Network找到包含collect的请求,发送的类型是POST,type是XHR或fetch(注意Type是fetch,可能是Fetch API,也可能是sendBeacon API,区分不了)

  • 优点: 比GIF请求更高效,因为它允许批量发送大量数据,这减少了网络请求的数量,提高了传输效率和用户体验。
  • 缺点: 需要JavaScript支持,因此如果用户禁用了JavaScript,数据将无法传输;另外在在离开页面时可能无法发送数据,因为依赖于JavaScript执行环境。

 

Navigator.sendBeacon

这是一种较新的方法,利用了浏览器的navigator.sendBeacon API,可以向服务器异步地发送数据,它允许在用户离开页面时(例如,关闭标签页或导航到另一个页面)发送数据。这确保了即使页用户离开页面,数据也能可靠地发送到服务器。

可以在浏览器中的Network找到包含collect的请求,发送的类型是POST,type是fetch(注意Type是fetch,可能是Fetch API,也可能是sendBeacon API,区分不了)

  • 优点: 特别适用于捕获用户离开页面时的行为(如退出页面事件),因为它不会阻塞页面卸载。它提供了更高的可靠性和数据完整性。
  • 缺点: 较旧的浏览器可能不支持sendBeacon API,因此需要有备用方法。

 

总结如下

类型
Method
Type
发送数据的大小限制
Image Beacon
GET
gif
16K,MP协议是130KB。
XMLHttpRequest
GET/POST等
fetch
16K,MP协议是130KB。
navigator.sendBeacon
POST
fetch
16K,MP协议是130KB。
XMLHttpRequest和navigator.sendBeacon的发送请求在浏览器开发者工具里不好区分,因为Type都是fetch,可以在GTM里设置参数transport_type,通过transport_type去区分。

 

这几种方式都各有优缺点:

  • 使用image,每个页面或事件都需要发送单独的HTTP请求,确保数据即时发送,但这可能会影响页面加载速度
  • 使用XHR,允许批量发送数据,这减少了网络请求的数量,提高了传输效率和用户体验,但用户离开没发送就会丢失数据
  • 使用sendBeacon,可以向服务器异步地发送数据,确保了即使页用户离开页面,数据也能可靠地发送到服务器,但不支持一些旧浏览器和会占用网络带宽和资源

Google Analytics 4使用的规则是:首选beacon(如果浏览器支持),其次采用xhrimage 。如果你指定了“beacon”,而用户的浏览器不支持“navigator.sendBeacon”方法,则Google Analytics 4会转而使用xhrimage,具体取决于匹配规模。

 

GA4的跟踪代码解析

Google Analytics 4 的跟踪代码如下:

<!-- Global site tag (gtag.js) - Google Analytics --><script src="https://www.googletagmanager.com/gtag/js?id=G-HZ4RDGTX66" async=""></script><script>
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);}
  gtag('js', new Date());

  gtag('config', 'G-HZ4RDGTX66');
</script>

第一行<script async src=”https://www.googletagmanager.com/gtag/js?id=G-HZ4RDGTX66″></script>,异步加载一段js,这段js是放在www.googletagmanager.com域名下的。

window.dataLayer = window.dataLayer || []:是dataLayer是数据层变量的初始化,完整的是var dataLayer = window.dataLayer = window.dataLayer || [] 然后你后面可以直接调用dataLayer.push。

function gtag(){dataLayer.push(arguments)};定义一个函数,方法

gtag(‘js’, new Date()):调用前面的函数,其中“js”是前面引入的那个js里面的一个已经定义的函数,

下面的“config”也是跟踪js里定义的函数,另一个定义函数为set。

 

请求限额

Google Analytics 4 的请求限额是16KB,这是gtag.js限制的,如果超过16KB,会发送失败,如下图:

 

MP协议是130KB。


如有疑问,可以在文章底部留言或邮件(haran.huang@ichdata.com) 我~

我们要如何帮助您?

发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址