Javascript 使用谷歌&x27;s Platform.js插件
我的网站看起来很慢。出于这个原因,我决定深入研究,寻找提高性能的方法。在服务器端,一切看起来都很好。但是在客户端,有很多JavaScript会减慢速度。当我查看加载堆栈时,我注意到两个罪犯 两个最严重的违规者是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
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主代码段还做了一些额外的事情,比如保留执行日期供以后使用
我能向你推荐什么
$(文档).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
中。