首页 文章

Google Analytics是否有性能开销?

提问于
浏览
78

Google Analytics在多大程度上会影响效果?

我正在寻找以下内容:

  • 基准(包括响应时间/页面加载时间等)

  • 链接或结果与类似的基准

在您的网站上测试Google Analytics(GA)的一种(可能的)方法:

  • 从您自己的服务器提供ga.js(Google AnalyticsJavaScript文件) .

  • 来自Google Daily(测试1)和Weekly(测试2)的更新 .

我很想知道这会如何减少客户端Web服务器和GA服务器之间的通信 .

有没有人进行过这些测试?如果是这样,你能提供你的结果吗?如果没有,是否有人有更好的方法来测试使用GA的性能损失(或缺乏)?

15 回答

  • 3

    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相比,其结果要低得多 .

  • 5

    Steve Souders(客户端性能专家)有一些关于:

    • 并行加载外部JavaScript文件的不同技术

    • 它们对加载时间和页面渲染的影响

    • 浏览器显示哪种"in progress"指示符(例如状态栏中的'loading',沙漏鼠标光标) .

  • 0

    我没有做任何花哨的自动化测试或程序化数字运算,但是使用带有Firebug插件的好旧Firefox和一对JS变量来表示执行所有GA代码之前和之后的时间差,这是我发现的 .

    下载了两件事:

    • ga.js是包含代码的JavaScript文件 . 这是9kb,因此初始下载可以忽略不计,文件名不是动态的,所以它在第一次请求后被缓存 .

    • 带有动态网址的35字节gif文件(通过查询字符串args),因此每次都会请求此文件 . 35字节也是一个可以忽略不计的下载(firebug说它花了我70分钟dl) .

    就执行时间而言,我第一次使用干净的浏览器缓存请求平均每次约330毫秒,后续请求在35到130毫秒之间 .

  • 31

    根据我自己的经验,添加Google-Analytics并没有改变加载时间 .

    根据FireBug的说法,它加载的时间不到一秒(648MS平均值),因此根据我的其他一些测试~60% - 80%的时间是从服务器传输数据,这当然会因用户而异 .

    由于上述原因,我没有预先认为在本地缓存分析代码会大大改变加载时间 .

    我在超过40个网站上使用Google-Analytics而没有任何原因,甚至是小的减速,花费大部分时间来获取图像,由于它们的典型尺寸,这是可以理解的 .

  • 2

    您可以在服务器上托管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服务器进行通信,但这是一个异步过程 .

    希望这可以帮助 .

  • 3

    有服务器端没有/最小的站点开销 .

    Google Analytics的HTML是您放置在网页底部的三行JavaScript . 它并不是真的,并且不会消耗比版权声明更多的服务器资源 .

    在客户端,页面可能需要一点时间(最多几秒)才能完成页面显示 . 但是 - 根据我的经验,未加载页面的唯一部分是Google的内容,因此用户可以完全看到您的页面 . 你只是让页面顶部的悸动者悸动了一会儿 .

    (注意:您需要将Google分析代码块放在任何提供的页面的底部,以便达到这种情况 . 我不知道如果代码块放在HTML的顶部会发生什么)

  • 2

    来自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 尚未缓存时一样,浏览器必须等待响应才能继续:

    GET /ga.js HTTP/1.1  
    Host: www.google-analytics.com  
    ...  
    If-Modified-Since: Mon, 22 Jun 2009 20:00:33 GMT  
    Cache-Control: max-age=0  
    
    HTTP/1.x 304 Not Modified  
    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  
    Server: Golfe
    

    请注意 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 .

  • 1

    从您的页面加载任何额外的javascript将增加从客户端的角度下载时间 . 您可以通过将其加载到页面底部来改善这一点,以便即使未加载GA也会呈现您的页面 . 我会避免缓存,因为你会失去页面客户端缓存的优势 . 如果客户端从其他页面缓存了它,那么您的页面请求将从客户端本身填充 . 如果您将其更改为从您的站点加载,即使客户端已经拥有代码(可能),也需要下载 . 向软件进程添加任务以避免从Google加载文件似乎没有理由进行可能不必要的优化 . 很难对此进行测试,因为它总能在本地提供更快的速度,但真正重要的是它对您的客户有多快 . 如果您决定在本地进行评估,请确保从家庭互联网连接进行测试 - 而不是坐在机架中服务器旁边的机器 .

  • 2

    使用FireBug和YSlow自行检查 . 然而,你会发现GA的大小约为9KB(实际上它实际上非常重要)并且它有时也不会非常快地加载(出于什么原因我不知道,我认为它可能是服务器“窒息”有时)

    由于我们的Ajax Samples上的性能问题,我们删除了它,但是我们再次为超快速响应优先级1,2和3

  • 0

    这真的取决于当天 . 我只是将它添加到博客中 . 我在加利福尼亚州,非常接近他们的主要数据中心,处于快速低点延迟业务DSL,在超频的i5上运行最近的Linux内核和稳定的Firefox,有足够的RAM .

    这是一个示例页面加载:
    enter image description here

    谷歌分析只增加了5秒的网络下载时间......获得15Kb!

    您可以在300 mili秒内看到blogger.com提供34Kb的服务 . 那快了32倍!

    另外,看看红线是什么(代表onLoad事件,意思是,页面上没有更多的脚本执行,所以浏览器最终可以停止加载指标/ spinings /等等)...看看它到右边有多远是 . 那可能是3秒的垃圾javascript处理 . 这条线离资源下载栏的末端非常远,这种情况非常罕见 . 我已完成调试,这是1/3分析错误,2/3博客错误 . ...人们会认为谷歌的东西很快 .

    编辑:

    更多数据 . 这是一个缓存所有内容的请求 . 以上是首次访问 .

    我从上面删除了googleplus废话有两个原因,我试图看看他们是否在缓慢的onLoad事件中扮演某些角色(他们不是),因为它几乎没用 .

    enter image description here

    因此,有了这个,我们可以看到网络时间是您最不担心的 . 即使在使用现代软件的快速计算机上,收费谷歌分析博主也会花费处理时间,但仍会将页面加载时间超过7秒 . 没有博客,只需检查这个网站,我看到资源加载后红线开始延迟0.5秒 .

  • 10

    没有什么值得注意的 .

    对Google的调用(包括DNS查找,加载Javascript,如果尚未缓存,实际跟踪器调用自己)应由客户端的浏览器在单独的线程中完成,以实际加载您的页面 . 当然,DNS查找将由底层系统完成,据我所知,它不会被视为浏览器中的查找(浏览器对每个站点将使用的请求线程数量有限制) .

    除此之外,浏览器将与所有其他嵌入式资源并行加载Google脚本,因此在最坏的情况下,您可能会略微增加下载所有内容所需的时间(我们按顺序说话)如果谷歌脚本是由浏览器最后加载的,或者您的页面上没有很多外部资源,或者浏览器缓存了您网页的外部资源,或者浏览器缓存了Google的脚本(如果毫秒,则无法察觉 . 非常可能)然后你不会看到任何差异 . 这只是绝对微不足道的,与在页面上粘贴一个额外的小图片的效果相同,粗略地说 .

    关于它可能会产生具体差异的唯一时间是,如果您有某些行为触发onLoad事件(等待外部资源加载),并且Google服务器处于停机/慢速状态 . 后者不太可能经常发生,但如果是这种情况,那么onLoad甚至不得不等待你自己的脚本/图像以这种方式加载 .

    如果你真的担心对页面加载时间的影响,那么看一下Firebug的"Net speed"部分,它将量化这个并绘制一个漂亮的图形 . 无论如何,我鼓励你为自己做这件事,即使其他人给你你要求的数字和基准,它对你自己的网站来说是完全不同的 .

  • 0

    好吧,我已经在网上进行了广泛的搜索,研究和评论 . 但我没有找到任何支持或反对该前提的统计数据 .

    However, this excerpt from http://www.ga-experts.com claims that its a Myth that GA slows down your website.

    呃,好吧,也许稍微,但我们谈的是毫秒 . GA通过页面标记工作,每当您向网页添加更多内容时,都会增加加载时间 . 但是,如果您遵循最佳实践(在</ body>标记之前添加标记),那么您的页面将首先加载 . 另外,请记住,任何基于页面标记的Web分析包(占大多数)都将以相同的方式工作

    从上面的答案和所有其他来源,我的感觉是,由于脚本包含在页面底部,因此用户不会感到任何减速 . 但是,如果我们谈论完整的页面加载,我们可能会说它会减慢页面加载时间 .

    如果您有,请发布更多信息,如果有,请发布数据 .

  • 1

    我不认为这是你想要的,但你担心的表现是什么?

    如果它是你的服务器...那么它显然没有影响,因为它驻留在谷歌服务器上 .

    如果是你的用户你担心的那个也没有影响 . 只要您将它放在body标签上方,那么您的用户将不会收到比之前更慢的任何内容...脚本最后加载并且不会影响用户的外观 . 所以基本上没有等待任何事情,甚至继续浏览页面而没有注意到它仍在加载 .

  • 6

    问题是Google Analytics会导致您的网站速度变慢,答案是肯定的 . 现在,在撰写本文时,Google-Analytics.com无法正常工作,因此在其网页中具有该页面的网站将不会加载页面,因此,它可能会变慢并导致您的网站甚至无法加载 . google-analytics.com落后这么长时间并不常见,现在已超过10分钟,但它只是表明它是可能的 .

  • 5

    它有两个方面 .

    • 分析脚本's'(和gif)下载

    • 下载脚本执行

    下载时间几乎总是小于100毫秒,这是可以接受的 .

    这就是扭曲 .

    • analytics.js执行250ms

    • 重新营销(如果启用)300毫秒

    • 人口统计(如果启用)200ms

    因此,重新营销的分析平均需要750毫秒 . 我觉得这在性能开销方面是一个巨大的数字 .

相关问题