Google Analytics(分析)是否有性能开销?
Google Analytics在多大程度上影响效果?
我正在寻找以下内容:
- 基准(包括响应时间/页面加载时间等)
- 链接或结果到类似的基准
在您的网站上testingGoogle Analytics(GA)的一种(可能的)方法:
- 从您自己的服务器上提供ga.js(Google Analytics JavaScript文件)。
- Google每日更新(testing1)和每周更新(testing2)。
我会很感兴趣的,看看如何减less客户端networking服务器和GA服务器之间的通信。
有没有人进行过这些testing? 如果是这样,你能提供你的结果吗? 如果没有,有没有人有一个更好的方法来testing使用遗传algorithm的性能(或缺乏)?
实现遗传algorithm的常见方法是把JS放在页面的底部。 这意味着您的DOM的其余部分可以在浏览器甚至考虑访问Google之前加载。 这应该让事情活泼起来。
我不会推荐cachingJS文件。
- 它可能已经在用户caching中(如果他们使用互联网的概率相当高)。
- 共同托pipe它意味着您的服务器将不必要地承担更多的请求,可能会减慢您的核心系统。
- 浏览器一次只能向一台服务器发送多less请求,因此,在您的域上粘贴GA JS可能意味着需要更长时间才能处理。
- Google的服务器比你的要好。
Steve Souders(客户端性能专家)提供了一些很棒的幻灯片 :
- 不同的技术来并行加载外部JavaScript文件
- 它们对加载时间和页面渲染的影响
- 浏览器显示什么样的“进行中”指示(例如状态栏中的“加载”,沙漏鼠标光标)。
我没有做任何花哨的自动化testing或编程数字处理,但使用良好的旧的Firefox与Firebug插件和一对JSvariables来说明所有GA代码执行前后的时差,这是我发现的。
下载两件东西:
-
ga.js是包含代码的JavaScript文件。 这是9kb,所以最初的下载是可以忽略的,文件名不是dynamic的,所以它在第一个请求后被caching。
-
一个带有dynamicurl的35字节的gif文件(通过查询stringargs),所以每次都要这样做。 35字节也是一个可以忽略的下载(萤火虫说,它花了我70毫秒)。
就执行时间而言,我首次请求的干净浏览器caching平均每次约330毫秒,随后的请求时间在35到130毫秒之间。
根据我自己的经验,Google-Analytics并没有改变加载时间。
根据FireBug,它载入的时间不到一秒钟(648MS平均),因此我的其他一些testing中有60%-80%的时间是从服务器传输数据,这当然会因用户而异。
出于以上原因,我并不认为在本地caching分析代码会改变加载时间。
我在40多个网站上使用Google Analytics(分析),没有任何一个甚至是很小的放缓的原因,花费最多的时间来获取由于它们的典型大小是可以理解的图像。
您可以将ga.js托pipe在您的服务器上,而不会造成任何问题,但是您的用户将会从他们可能访问的其他站点cachingga.js。 所以下载ga.js,因为它非常stream行,在许多情况下(即它已经被caching)增加了很less的开销。
另外,由于networking拓扑结构的不同,DNS查找在不同地方的费用也不相同。 caching行为将根据用户是否使用其他包含ga.js的站点而改变。
一旦JavaScript已经加载,ga.js确实与Google服务器进行通信,但这是一个asynchronous过程。
希望这可以帮助。
在服务器端没有/最小的站点开销。
Google Analytics(分析)的HTML是您放置在网页底部的三行javascript代码。 没有什么是真的,也不会比版权声明消耗更多的服务器资源。
在客户端,页面可以花费一点时间(最多几秒)来完成显示页面。 然而 – 根据我的经验,网页上唯一没有加载的是Google的东西,所以用户可以很好地看到你的网页。 你只是在页面顶部的throbber悸动了一会儿。
(注意:你需要把你的谷歌分析代码块放在任何提供的页面底部,我不知道如果代码块放在HTML的顶部会发生什么情况)
来自Google的传统指令如何包含ga.js
使用document.write()
。 因此,即使浏览器以某种方式asynchronous加载外部JavaScript库,直到某些代码被实际执行, document.write()
仍然会阻止页面加载。 后面的asynchronous指令不直接使用document.write()
,但也许insertBefore
也阻止页面加载?
但是,Google将caching的max-age
为86,400秒 (即1天,甚至设置为公开 ,所以也适用于代理)。 所以,尽可能多的网站加载相同的Google脚本,JavaScript通常会从caching中获取。 尽pipe如此, 即使ga.js
被caching,只需点击reloadbutton,浏览器也会经常询问Google是否有任何变化 。 然后,就像ga.js
没有被caching,浏览器在继续之前必须等待响应:
GET /ga.js HTTP / 1.1 主持人:www.google-analytics.com ... If-Modified-Since:Mon,22 Jun 2009 20:00:33 GMT Cache-Control:max-age = 0 HTTP / 1.x 304未修改 Last-Modified:Mon,22 Jun 2009 20:00:33 GMT date:Sun,26 Jul 2009 12:08:27 GMT Cache-Control:max-age = 604800,public 服务器:高尔夫
请注意, 许多用户单击重新加载新闻网站,论坛和博客,他们已经在浏览器窗口中打开,使得许多浏览器阻止,直到收到谷歌的回应 。 您多长时间重新加载SO主页? 当Google Analytics(分析)回应缓慢时,此类用户会马上注意到。 (在网上发布了很多解决scheme来asynchronous加载ga.js
脚本,对于这些types的站点尤其有用,但可能不会比Google的更新说明更好。
一旦JavaScript已经加载并执行,web实际加载(跟踪图像)应该是asynchronous的。 因此, 跟踪图像的加载不应该阻塞任何东西, 除非页面使用body.onload()
。 在这种情况下,如果networking错误不能及时加载,那么单击重新加载实际上会让事情变得更糟,因为单击重新加载也会使浏览器再次请求脚本,使用上述If-Modified-Since
。 在重新加载之前 ,浏览器只是在等待networking错误,而点击重新加载之后,它也需要ga.js
脚本的响应。
因此, 使用Google Analytics的网站不应该使用body.onload()
。 相反,应该使用jQuery的$(document).ready()或MooTools的domready事件 。
另请参阅Google的function概述 ,解释Google Analytics如何收集数据? 包括跟踪代码的工作原理 。 (这也正式表示Google收集第一方cookies的内容,即:您访问的网站上的cookies。)
更新: 2009年12月 ,Google发布了一个asynchronous版本 。 以上应该告诉大家升级只是为了确定,虽然升级并不能解决所有问题 。
加载任何额外的JavaScript到你的页面将会从客户的angular度增加下载时间。 您可以通过将其加载到页面的底部来改善此情况,即使GA未加载,也可以呈现您的页面。 我会避免caching,因为你会失去你的页面的客户端caching的优势。 如果客户端从其他页面caching,您的页面的请求将从客户端本身填充。 如果您将其更改为从您的站点加载,即使客户端已经有代码(可能),也需要下载。 将任务添加到您的软件stream程以避免从Google加载文件似乎是不必要的优化。 这将是很难testing,因为它总是提供更快的地方,但真正重要的是它的速度为您的客户多快。 如果您决定评估是否在本地保存,请确保从家庭互联网连接进行testing – 而不是机架旁边的服务器。
使用FireBug和YSlow检查你自己。 然而,你会发现,GA的大小约为9KB(实际上它的function相当实用),而且它有时不会加载得非常快(因为我不知道的原因,我认为它可能是服务器有时会“窒息”)
由于我们的Ajax示例中的性能问题,我们将其删除 ,但对于我们来说, 超快速响应优先级为1,2和3
这真的取决于一天。 我只是把它添加到博客。 我在加利福尼亚州,离他们的主要数据中心非常近,在一个快速的低延迟业务DSL上,在超频的i5上,有大量的内存运行着最新的linux内核和稳定的firefox。
这里是一个示例页面加载:
谷歌分析单独添加5 秒的networking下载时间…得到15Kb!
您可以在300毫秒内看到blogger.com服务34Kb。 这快了32倍!
另外,看看Red Line(代表onLoad事件,意思是没有更多的脚本在页面上执行,所以浏览器可以最终停止加载指示符/ spinings /等)…看看它有多远是。 这可能是3秒的垃圾JavaScript处理发生在那里。 这条线远离资源下载条的末端是非常罕见的。 我已经完成debugging,这是1/3的分析错误,2/3的博客错误。 人们会认为谷歌的东西很快。
编辑:
一些更多的数据。 这里是一切caching的请求。 以上是第一次访问。
我已经从上面删除了googleplus废话,原因有两个,我试图看看他们是否在慢onLoad事件(他们不是)上玩的一部分,因为它是最没用的。
所以,有了这个,我们可以看到,networking时间是你最担心的问题。 即使在使用现代软件的快速电脑上,收费谷歌分析+博客处理时间仍然会将您的网页加载时间超过7秒。 没有博客,只要检查这个网站,我看到0.5秒的资源加载后的延迟和红线踢。
没有什么明显的。
对Google的调用(包括DNS查找,如果还没有被caching的话加载Javascript,实际的跟踪程序自己调用)应该由客户端的浏览器在一个单独的线程中完成,以实际加载页面。 当然,DNS查询将由底层系统来完成,而且就我所知,在浏览器中浏览器(浏览器对每个站点使用的请求线程数量有限制)不会被计算在内。
除此之外,浏览器将与所有其他embedded式资源一起并行加载Google脚本,因此在下载所有内容时可能会有极小的增加,最糟糕的情况是(我们按照如果Google脚本最后被浏览器加载,或者页面上没有太多的外部资源,或者页面的外部资源被浏览器caching,或者Google的脚本被浏览器caching了(毫秒)很可能),那么你就不会看到任何区别了,总的来说,这是非常微不足道的,就像在页面上粘贴一张额外的小图片一样。
大概唯一一次它可能会产生具体的差异,如果你有一些onLoad事件触发(等待外部资源加载)的行为, 并且谷歌服务器速度慢/慢。 后者不太可能经常发生,但如果是这种情况,那么在下载脚本之前,onLoad甚至不会被触发。 无论如何,你可以通过使用各种“当DOM加载”事件来解决这个问题,因为你不必等待自己的脚本/图像加载。
如果你真的担心页面加载时间的影响,那么看看Firebug的“网速”部分,这将量化这一点,并绘制一个漂亮的graphics。 无论如何,我会鼓励你自己去做,因为即使别人给你你要求的数字和基准,你自己的网站也是完全不同的。
那么,我已经在网上search,研究和广泛的研究了。 但是我还没有find任何赞成或反对前提的统计数据。
不过,这个来自http://www.ga-experts.com的摘录声称,它是一个神话,GA减慢你的网站。;
呃,好吧,也许稍微,但我们正在谈论毫秒。 遗传algorithm通过页面标记进行工作,每当您向网页添加更多内容时,都会增加加载时间。 但是,如果您遵循最佳做法(在
</body>
标签之前添加标签),那么您的页面将首先加载。 另外,请记住,任何基于页面标签的网站分析包(这是大多数)将以同样的方式工作
从上面的答案和所有其他来源,我的感受是,无论是由用户不认可的减速,因为脚本包含在页面的底部。 但是,如果我们谈论完整的页面加载,我们可能会说,它减缓了页面加载时间。
如果您有任何信息,请发送更多信息。
我不认为这是你要找的东西,但是你担心的是什么?
如果你的服务器…那么它显然没有影响,因为它驻留在Google服务器上。
如果你的用户那你担心的话那也是没有影响的。 只要你把它放在body标签的上面,那么你的用户将不会收到比以前更慢的任何东西…脚本最后加载,并且不会影响用户的外观。 所以基本上没有等待任何东西,甚至继续浏览整个页面,而不会注意到它仍在加载。
问题是Google Analytics(分析)会导致您的网站变慢,答案是肯定的。 现在在撰写本文的时候,Google-Analytics.com无法正常工作,因此网页上的页面不会加载页面,所以是的,它可能会减慢速度,导致您的网站无法加载。 google-analytics.com已经很长时间了,现在已经超过10分钟了,但这只是表明这是可能的。
它有两个方面。
- 分析脚本的'(和gif)下载
- 下载的脚本执行
下载时间几乎总是less于100ms,这是可以接受的。
这里是扭曲的。
- analytics.js执行250ms
- 重新营销(如果启用)300毫秒
- 人口(如果启用)200毫秒
因此,再营销分析平均需要750毫秒。 我觉得这是一个巨大的数字,当涉及到性能开销。