Google Analytics是否有性能开销? -博客-DevBox开发工具箱
Google Analytics是否有性能开销?
作者:谢谢巷议 | 2023-09-01 09:36
如何解决《GoogleAnalytics是否有性能开销?》经验,为你挑选了5个好方法。
Google Analytics在多大程度上会影响效果?
我正在寻找以下内容:
基准(包括响应时间/页面加载时间等)
链接或结果与类似的基准
在您的网站上测试Google Analytics(GA)的一种(可能的)方法:
从您自己的服务器提供ga.js(Google AnalyticsJavaScript文件).
从Google Daily(测试1)和Weekly(测试2)更新.
我很想知道这会如何减少客户端Web服务器和GA服务器之间的通信.
有没有人进行过这些测试?如果是这样,你能提供你的结果吗?如果没有,是否有人有更好的方法来测试使用GA的性能损失(或缺乏)?
1> Oli..:
2018年更新:您在何处以及如何安装Google Analytics已经一次又一次地改变.当前的gtag.js代码做了一些事情:
加载gtag脚本但是异步(非阻塞).这意味着它不会以带宽和处理之外的任何其他方式减慢页面速度.
在名为的页面上创建一个数组 window.datalayer
定义一个小gtag()
函数,只需将你抛出的任何内容推送到该数组中.
使用pageload事件调用它.
加载主gtag脚本后,它会将此阵列与Google同步并监视其更改.这是一个很好的系统,不像以前的系统(例如前面的填充代码
),这意味着你可以在DOM渲染之前调用事件,并且只要你gtag()
先定义脚本顺序并不重要.
这并不是说这里没有性能开销.我们仍然在加载脚本时使用带宽(它在本地缓存15分钟),并且它们不是一小堆脚本,它们会向你抛出,所以有一些CPU时间来处理它.
但与(例如)现代前端框架相比,它可以忽略不计.
如果您想要获得绝对的,最简化的网站,请完全避免.如果您正试图保护用户的隐私,请不要使用任何第三方脚本......但如果我们谈论的是一个普通的现代网站,那么如果你是gtag.js的话,其结果要远远低于gtag.js遇到性能问题.
我不知道他们是不是在两年前没有gzipping,但是,他们现在,并且在撰写本文时它将文件大小从30.92k减少到12.63k.
谷歌可能有更好的服务器,但如果可能,他们不会提供gzip压缩文件; 22k不是一个巨大的文件,它足够大,可以从gzipping中受益,特别是纯文本(在我的服务器上将其减少到10k).
错误:GA文件被标记为no-cache.没有人缓存它.
2> orip..:
有一些伟大的幻灯片由史蒂夫Souders的(客户端性能专家)约:
并行加载外部JavaScript文件的不同技术
它们对加载时间和页面呈现的影响
浏览器显示什么样的"进行中"指示器(例如,状态栏中的"加载",沙漏鼠标光标).
3> Rich..:
我没有做任何花哨的自动化测试或程序化数字运算,但是使用带有Firebug插件的好旧Firefox和一对JS变量来表示执行所有GA代码之前和之后的时间差,这是我发现的.
下载了两件事:
ga.js是包含代码的JavaScript文件.这是9kb,因此初始下载可以忽略不计,文件名不是动态的,所以它在第一次请求后被缓存.
带有动态URL的35字节gif文件(通过查询字符串args),因此每次都会请求.35字节也是一个可以忽略不计的下载(firebug说它花了我70分钟dl).
就执行时间而言,我第一次使用干净的浏览器缓存请求平均每次约330毫秒,后续请求在35到130毫秒之间.
4> UnkwnTech..:
根据我自己的经验,添加Google-Analytics并没有改变加载时间.
根据FireBug的说法,它加载的时间不到一秒(648MS平均值),因此根据我的其他一些测试~60% - 80%的时间是从服务器传输数据,这当然会因用户而异.
由于上述原因,我没有预先认为在本地缓存分析代码会大大改变加载时间.
我在超过40个网站上使用Google-Analytics而没有任何原因,甚至是小的减速,花费大部分时间来获取图像,由于它们的典型尺寸,这是可以理解的.
5> Dan Rosensta..:
您可以在服务器上托管ga.js而不会出现任何问题,但我们的想法是,您的用户将从他们可能访问过的其他网站缓存ga.js. 所以下载ga.js,因为它如此受欢迎,在许多情况下增加了非常少的开销(即,它已经被缓存).
此外,由于网络拓扑,DNS查找在不同位置的成本并不相同.缓存行为会根据用户是否使用包含ga.js的其他网站而发生变化.
加载javascript后,ga.js会与Google服务器进行通信,但这是一个异步过程.
希望这可以帮助.
推荐阅读
-
如何解决《python中的文字是什么?》经验,为你挑选了2个好方法。 ...
[详细]
-
如何解决《如何使用gitlab进行let的加密?》经验,为你挑选了3个好方法。 ...
[详细]
-
如何解决《如何在bash数组的所有条目中用下划线替换空格》经验,为你挑选了1个好方法。 ...
[详细]
-
如何解决《Ember2:截断文本并添加省略号》经验,为你挑选了1个好方法。 ...
[详细]
-
如何解决《休眠验证+自定义约束+java.lang.NullPointerException》经验,为你挑选了0个好方法。 ...
[详细]
-
如何解决《你如何调试react-native使用的自定义android模块》经验,为你挑选了1个好方法。 ...
[详细]
-
如何解决《npm递归更新包》经验,为你挑选了0个好方法。 ...
[详细]
-
如何解决《如何在Django中缓存模型方法?》经验,为你挑选了0个好方法。 ...
[详细]
-
如何解决《Java在同一组件上摆动不同的布局》经验,为你挑选了1个好方法。 ...
[详细]
-
如何解决《使用R中的lubridate包找到一年中的某一天》经验,为你挑选了1个好方法。 ...
[详细]
-
如何解决《如何使用JSX重复一次元素n次》经验,为你挑选了3个好方法。 ...
[详细]
-
如何解决《MouseHover在鼠标关闭时不会触发》经验,为你挑选了0个好方法。 ...
[详细]
-
如何解决《Go-如何增加最大Stdin输入长度?》经验,为你挑选了1个好方法。 ...
[详细]
-
如何解决《PythonLDAP写入ActiveDirectory的属性》经验,为你挑选了0个好方法。 ...
[详细]
-
如何解决《Cloudkit:CKDatabaseOperation不支持蜂窝网络》经验,为你挑选了1个好方法。 ...
[详细]
-
如何解决《引用或指向不完整类型的std::vector》经验,为你挑选了0个好方法。 ...
[详细]
-
如何解决《让VS2015验证C#的早期语法以维持与VS2013的竞争的方法》经验,为你挑选了1个好方法。 ...
[详细]
-
如何解决《这个反汇编如何与给定的C代码相对应?》经验,为你挑选了1个好方法。 ...
[详细]
-
如何解决《否定Elixir中的谓词》经验,为你挑选了1个好方法。 ...
[详细]
-
如何解决《C#-使用反射从列表<Class>中提取值列表》经验,为你挑选了1个好方法。 ...
[详细]