Google Analytics在多大程度上会影响效果?
我正在寻找以下内容:
-
基准(包括响应时间/页面加载时间等)
-
链接或结果与类似的基准
在您的网站上测试Google Analytics(GA)的一种(可能的)方法:
-
从您自己的服务器提供ga.js(Google AnalyticsJavaScript文件) .
-
来自Google Daily(测试1)和Weekly(测试2)的更新 .
我很想知道这会如何减少客户端Web服务器和GA服务器之间的通信 .
有没有人进行过这些测试?如果是这样,你能提供你的结果吗?如果没有,是否有人有更好的方法来测试使用GA的性能损失(或缺乏)?
15 回答
2018 update :您在何处以及如何安装Google Analytics已经一次又一次地改变 . 当前的gtag.js代码做了一些事情:
加载gtag脚本但是异步(非阻塞) . 这意味着它不会以带宽和处理之外的任何其他方式减慢页面速度 .
在名为
window.datalayer
的页面上创建一个数组定义一个小的
gtag()
函数,只需将你抛出的任何内容推送到该数组中 .使用pageload事件调用它 .
加载主gtag脚本后,它会将此阵列与Google同步并监视其更改 . 这是一个很好的系统,与之前的系统不同(例如,在
</body>
之前填充代码),这意味着你可以在DOM渲染之前调用事件,并且脚本顺序并不重要,只要你首先定义gtag()
.这并不是说这里没有性能开销 . 我们仍然在加载脚本时使用带宽(它在本地缓存15分钟),并且它们不是一小堆脚本,它们会向你抛出,所以有一些CPU时间来处理它 .
But it's all negligible compared to (eg) modern frontend frameworks.
如果你试图保护用户的隐私,不要谈论一个普通的现代网站,如果你遇到性能问题,那么与gtag.js相比,其结果要低得多 .
Steve Souders(客户端性能专家)有一些关于:
并行加载外部JavaScript文件的不同技术
它们对加载时间和页面渲染的影响
浏览器显示哪种"in progress"指示符(例如状态栏中的'loading',沙漏鼠标光标) .
我没有做任何花哨的自动化测试或程序化数字运算,但是使用带有Firebug插件的好旧Firefox和一对JS变量来表示执行所有GA代码之前和之后的时间差,这是我发现的 .
下载了两件事:
ga.js是包含代码的JavaScript文件 . 这是9kb,因此初始下载可以忽略不计,文件名不是动态的,所以它在第一次请求后被缓存 .
带有动态网址的35字节gif文件(通过查询字符串args),因此每次都会请求此文件 . 35字节也是一个可以忽略不计的下载(firebug说它花了我70分钟dl) .
就执行时间而言,我第一次使用干净的浏览器缓存请求平均每次约330毫秒,后续请求在35到130毫秒之间 .
根据我自己的经验,添加Google-Analytics并没有改变加载时间 .
根据FireBug的说法,它加载的时间不到一秒(648MS平均值),因此根据我的其他一些测试~60% - 80%的时间是从服务器传输数据,这当然会因用户而异 .
由于上述原因,我没有预先认为在本地缓存分析代码会大大改变加载时间 .
我在超过40个网站上使用Google-Analytics而没有任何原因,甚至是小的减速,花费大部分时间来获取图像,由于它们的典型尺寸,这是可以理解的 .
您可以在服务器上托管ga.js而不会出现任何问题,但我们的想法是,您的用户将从他们可能访问过的某个网站缓存ga.js . 所以下载ga.js,因为它已被缓存了's so popular, adds very little overhead in many cases (i.e., it' .
此外,由于网络拓扑,DNS查找在不同位置的成本并不相同 . 缓存行为会根据用户是否使用包含ga.js的其他网站而发生变化 .
加载javascript后,ga.js会与Google服务器进行通信,但这是一个异步过程 .
希望这可以帮助 .
有服务器端没有/最小的站点开销 .
Google Analytics的HTML是您放置在网页底部的三行JavaScript . 它并不是真的,并且不会消耗比版权声明更多的服务器资源 .
在客户端,页面可能需要一点时间(最多几秒)才能完成页面显示 . 但是 - 根据我的经验,未加载页面的唯一部分是Google的内容,因此用户可以完全看到您的页面 . 你只是让页面顶部的悸动者悸动了一会儿 .
(注意:您需要将Google分析代码块放在任何提供的页面的底部,以便达到这种情况 . 我不知道如果代码块放在HTML的顶部会发生什么)
来自Google的traditional instructions如何包含
ga.js
使用document.write()
. 因此,即使浏览器以某种方式异步加载外部JavaScript库,直到某些代码实际执行,document.write()
仍然会阻止页面加载 . 后来asynchronous instructions不直接使用document.write()
,但也许insertBefore
也会阻止页面加载?但是,Google将缓存的
max-age
设置为86,400 seconds(为1天,甚至设置为公开,因此也适用于代理) . 因此,由于许多网站都加载了相同的Google脚本,因此通常会从缓存中获取JavaScript . 仍然, even when ga.js is cached, simply clicking the reload button will often make a browser ask Google about any changes . 然后,就像ga.js
尚未缓存时一样,浏览器必须等待响应才能继续:请注意 many users click reload for news sites, forums and blogs they already have open in a browser window, making many browsers block until a response from Google is received . 您多久重新加载SO主页?当Google Analytics响应缓慢时,此类用户会立即注意到 . (在网上发布many solutions以异步方式加载
ga.js
脚本,对这些类型的网站特别有用,但可能不再比Google的更新说明更好 . )一旦JavaScript加载并执行,Web错误(跟踪图像)的实际加载应该是异步的 . 所以, the loading of the tracking image should not block anything else, unless the page uses body.onload() . 在这种情况下,如果Web错误未能及时加载,则单击重新加载实际上会使事情变得更糟,因为单击重新加载也会使浏览器再次请求脚本,使用上述
If-Modified-Since
. 在重新加载之前,浏览器只等待Web错误,而在单击重新加载后,它还需要ga.js
脚本的响应 .所以, sites using Google Analytics should not use body.onload() . 相反,应该使用像jQuery的$(document).ready()或MooTools'domready event这样的东西 .
另请参阅Google的Functional Overview,解释Google Analytics如何收集数据?包括跟踪代码的工作原理 . (这也正式确定了Google收集第一方Cookie的内容 . 即:您访问的网站上的Cookie . )
更新:in December 2009,谷歌已发布an asynchronous version . 上面应该告诉大家升级只是为了确保,尽管upgrading does not solve everything .
从您的页面加载任何额外的javascript将增加从客户端的角度下载时间 . 您可以通过将其加载到页面底部来改善这一点,以便即使未加载GA也会呈现您的页面 . 我会避免缓存,因为你会失去页面客户端缓存的优势 . 如果客户端从其他页面缓存了它,那么您的页面请求将从客户端本身填充 . 如果您将其更改为从您的站点加载,即使客户端已经拥有代码(可能),也需要下载 . 向软件进程添加任务以避免从Google加载文件似乎没有理由进行可能不必要的优化 . 很难对此进行测试,因为它总能在本地提供更快的速度,但真正重要的是它对您的客户有多快 . 如果您决定在本地进行评估,请确保从家庭互联网连接进行测试 - 而不是坐在机架中服务器旁边的机器 .
使用FireBug和YSlow自行检查 . 然而,你会发现GA的大小约为9KB(实际上它实际上非常重要)并且它有时也不会非常快地加载(出于什么原因我不知道,我认为它可能是服务器“窒息”有时)
由于我们的Ajax Samples上的性能问题,我们删除了它,但是我们再次为超快速响应优先级1,2和3
这真的取决于当天 . 我只是将它添加到博客中 . 我在加利福尼亚州,非常接近他们的主要数据中心,处于快速低点延迟业务DSL,在超频的i5上运行最近的Linux内核和稳定的Firefox,有足够的RAM .
这是一个示例页面加载:
谷歌分析只增加了5秒的网络下载时间......获得15Kb!
您可以在300 mili秒内看到blogger.com提供34Kb的服务 . 那快了32倍!
另外,看看红线是什么(代表onLoad事件,意思是,页面上没有更多的脚本执行,所以浏览器最终可以停止加载指标/ spinings /等等)...看看它到右边有多远是 . 那可能是3秒的垃圾javascript处理 . 这条线离资源下载栏的末端非常远,这种情况非常罕见 . 我已完成调试,这是1/3分析错误,2/3博客错误 . ...人们会认为谷歌的东西很快 .
编辑:
更多数据 . 这是一个缓存所有内容的请求 . 以上是首次访问 .
我从上面删除了googleplus废话有两个原因,我试图看看他们是否在缓慢的onLoad事件中扮演某些角色(他们不是),因为它几乎没用 .
因此,有了这个,我们可以看到网络时间是您最不担心的 . 即使在使用现代软件的快速计算机上,收费谷歌分析博主也会花费处理时间,但仍会将页面加载时间超过7秒 . 没有博客,只需检查这个网站,我看到资源加载后红线开始延迟0.5秒 .
没有什么值得注意的 .
对Google的调用(包括DNS查找,加载Javascript,如果尚未缓存,实际跟踪器调用自己)应由客户端的浏览器在单独的线程中完成,以实际加载您的页面 . 当然,DNS查找将由底层系统完成,据我所知,它不会被视为浏览器中的查找(浏览器对每个站点将使用的请求线程数量有限制) .
除此之外,浏览器将与所有其他嵌入式资源并行加载Google脚本,因此在最坏的情况下,您可能会略微增加下载所有内容所需的时间(我们按顺序说话)如果谷歌脚本是由浏览器最后加载的,或者您的页面上没有很多外部资源,或者浏览器缓存了您网页的外部资源,或者浏览器缓存了Google的脚本(如果毫秒,则无法察觉 . 非常可能)然后你不会看到任何差异 . 这只是绝对微不足道的,与在页面上粘贴一个额外的小图片的效果相同,粗略地说 .
关于它可能会产生具体差异的唯一时间是,如果您有某些行为触发onLoad事件(等待外部资源加载),并且Google服务器处于停机/慢速状态 . 后者不太可能经常发生,但如果是这种情况,那么onLoad甚至不得不等待你自己的脚本/图像以这种方式加载 .
如果你真的担心对页面加载时间的影响,那么看一下Firebug的"Net speed"部分,它将量化这个并绘制一个漂亮的图形 . 无论如何,我鼓励你为自己做这件事,即使其他人给你你要求的数字和基准,它对你自己的网站来说是完全不同的 .
好吧,我已经在网上进行了广泛的搜索,研究和评论 . 但我没有找到任何支持或反对该前提的统计数据 .
However, this excerpt from http://www.ga-experts.com claims that its a Myth that GA slows down your website.
从上面的答案和所有其他来源,我的感觉是,由于脚本包含在页面底部,因此用户不会感到任何减速 . 但是,如果我们谈论完整的页面加载,我们可能会说它会减慢页面加载时间 .
如果您有,请发布更多信息,如果有,请发布数据 .
我不认为这是你想要的,但你担心的表现是什么?
如果它是你的服务器...那么它显然没有影响,因为它驻留在谷歌服务器上 .
如果是你的用户你担心的那个也没有影响 . 只要您将它放在body标签上方,那么您的用户将不会收到比之前更慢的任何内容...脚本最后加载并且不会影响用户的外观 . 所以基本上没有等待任何事情,甚至继续浏览页面而没有注意到它仍在加载 .
问题是Google Analytics会导致您的网站速度变慢,答案是肯定的 . 现在,在撰写本文时,Google-Analytics.com无法正常工作,因此在其网页中具有该页面的网站将不会加载页面,因此,它可能会变慢并导致您的网站甚至无法加载 . google-analytics.com落后这么长时间并不常见,现在已超过10分钟,但它只是表明它是可能的 .
它有两个方面 .
分析脚本's'(和gif)下载
下载脚本执行
下载时间几乎总是小于100毫秒,这是可以接受的 .
这就是扭曲 .
analytics.js执行250ms
重新营销(如果启用)300毫秒
人口统计(如果启用)200ms
因此,重新营销的分析平均需要750毫秒 . 我觉得这在性能开销方面是一个巨大的数字 .