Javascript 使用谷歌&x27;s Platform.js插件

Javascript 使用谷歌&x27;s Platform.js插件,javascript,google-analytics,Javascript,Google Analytics,我的网站看起来很慢。出于这个原因,我决定深入研究,寻找提高性能的方法。在服务器端,一切看起来都很好。但是在客户端,有很多JavaScript会减慢速度。当我查看加载堆栈时,我注意到两个罪犯 两个最严重的违规者是https://apis.google.com/js/platform.js和https://www.google-analytics.com/analytics.js。我将前者用于+1按钮,而后者用于分析目的。从现在起,我将按如下方式加载它们: <script> (f

我的网站看起来很慢。出于这个原因,我决定深入研究,寻找提高性能的方法。在服务器端,一切看起来都很好。但是在客户端,有很多JavaScript会减慢速度。当我查看加载堆栈时,我注意到两个罪犯

两个最严重的违规者是
https://apis.google.com/js/platform.js
https://www.google-analytics.com/analytics.js
。我将前者用于+1按钮,而后者用于分析目的。从现在起,我将按如下方式加载它们:

<script>
    (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
    (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
    m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
    })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');

    ga('create', '[MyId]', 'auto');
    ga('send', 'pageview');
</script>

<script src="https://apis.google.com/js/platform.js" async defer></script> 
(function(w,d,s,g,js,fs){
  g=w.gapi||(w.gapi={});g.analytics={q:[],ready:function(f){this.q.push(f);}};
  js=d.createElement(s);fs=d.getElementsByTagName(s)[0];
  js.src='https://apis.google.com/js/platform.js';
  fs.parentNode.insertBefore(js,fs);
  js.onload=function(){
    g.load('analytics');
  };
}(window,document,'script'));
这至少会加载GooglePlus插件。然而,它实际上不再记录访问。看起来g.load带来了分析功能。但是,我的身份证没有被分配到任何地方。同时,在platform.js版本中,我看不到在哪里分配它

有人能提供一些见解吗?如果可能的话,我希望能够少加载一个外部资源


谢谢。

如果platform.js中包含analytics.js,这可能有用吗

(function(w,d,s,g,js,fs){
  g=w.gapi||(w.gapi={});g.analytics={q:[],ready:function(f){this.q.push(f);}};
  js=d.createElement(s);fs=d.getElementsByTagName(s)[0];
  js.src='https://apis.google.com/js/platform.js';
  fs.parentNode.insertBefore(js,fs);
  js.onload=function(){
    g.load('analytics');
  };
  ga('create', '[MyId]', 'auto');
  ga('send', 'pageview');
}(window,document,'script'));
我的印象是platform.js包括Google Plus和Google Analytics

不,这不是真的
platform.js
允许您加载Google Analytics API客户端库(用于以编程方式报告GA数据),但这不同于
Analytics.js
(用于向GA发送跟踪数据)

根据您展示的代码,这两个库都是异步加载的,因此它们不应该影响站点的加载时间。当启动
window.load
事件时,它们可能会变慢,但这并不意味着您的站点加载变慢,因为这不会影响应用程序关键资源的加载


如果您确实希望加载这些库而不影响任何加载指标,则可以将加载延迟到
窗口。load
事件触发之后,但老实说,我只会在其他代码等待
窗口时这样做。load
触发初始化。

很难理解这两个库为什么会减慢页面速度,它们通常使用异步技术(以及

这个平台的重量不到20kbs,通常这个库托管在一个CDN中,所以也许你的主机没有欧洲(测试的那个)那么胖,但是我可以放弃这个选项,因为美国和Latam服务器也很好

我读过platform.js,与analytics.js没有共同点,为什么你认为它包括在内?。也许Google Analytics包含在Iframe或其他让您感到困惑的资源中,但如果您没有正确使用命令ga('create'),则不会向您的帐户发送任何信息。也许你仍然拥有这个库,但是信息被发送到了另一个帐户(当一些iFrame被嵌入时,这种情况经常发生,它们包括Google Analytics,但位于不同的域中,并且数据被发送到两个不同的帐户,这在开始时可能很难理解)

但是,如果我理解的话,你的主要疑问仍然存在

如果你想为两个人都保留一个图书馆,我认为这是不可能的。我检查了platform.js,没有提到Ga对象(Google Analytics上使用的对象),甚至没有提到collect URL(您将信息发送到Google Analytics的URL)。GA主代码段还做了一些额外的事情,比如保留执行日期供以后使用

我能向你推荐什么

  • 查看点击次数,通过网络控制台,Google analytics点击被发送到,如果您不使用SSL,则通过HTTP强制HTTPS调用(您的点击次数是所有点击次数的两倍,但analytics将只使用安全的一次)。或者是用来看看这个。检查您的实现是否仍处于活动状态

  • 也许你可以检查Google Tag Manager,这个工具可以配置为在页面视图(HTML.load)中加载DOM上的库,我不建议你这样做,你会减少发送到工具的点击次数(并获得更少的会话)

  • 将代码移到页面底部。出于同样的原因,这不是一个好主意

  • 这样做,但仍然不正确,只会延迟库的加载

  • $(文档).ready(函数(){
    (函数(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]| |函数(){
    (i[r].q=i[r].q | |[]).push(参数)},i[r].l=1*新日期();a=s.createElement(o),
    m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
    })(窗口、文档、“脚本”和https://www.google-analytics.com/analytics.js","ga",;
    ga('create'、'MyId'、'auto');
    ga(‘发送’、‘页面浏览’);
    
    });我得到一个错误,说未定义
    ga(…)
    。就在
    ga('create',…)
    之前的
    g
    变量是什么。那是钩子吗?那是分析人员所在的位置吗?
    analytics.js
    不包括在
    platform.js
    中。