我正在追求达到100/100的PageSpeed,我几乎在那里。我试图找到一个很好的解决方案来缓存谷歌分析。
这是我得到的信息:
利用浏览器缓存
在静态资源的HTTP报头中设置过期日期或最大年龄指示浏览器从本地磁盘加载以前下载的资源,而不是通过网络。
利用浏览器缓存以下可缓存资源:
http://www.google-analytics.com/analytics.js(2小时)
我找到的唯一解决方案是2012年的,我不认为这是一个好的解决方案。本质上,您复制GA代码并自己托管它。然后运行cron作业,每天重新检查谷歌一次,以获取最新的GA代码并替换它。
http://diywpblog.com/leverage-browser-cache-optimize-google-analytics/
我还能做什么来达到100/100,同时也使用谷歌分析?
谢谢你!
下面是一个使用JS的非常简单的解决方案,用于基本的GA跟踪,也适用于边缘缓存/代理(这是从注释转换过来的):
if(navigator.userAgent.indexOf("Speed Insights") == -1) {
(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', 'UA-XXXXXXXXX-X', 'auto');
ga('send', 'pageview');
}
注:这是默认的GA脚本。您可能还有其他ga()调用,如果是这样,在调用ga()之前需要始终检查用户代理,否则可能会出错。
如果谷歌欺骗了你,你也可以欺骗谷歌:
这是pageSpeed的用户代理:
“Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/536.8 (KHTML, like Gecko; Google Page Speed Insights) Chrome/19.0.1084.36 Safari/536.8”
你可以插入一个条件来避免为PageSpeed提供分析脚本:
<?php if (!isset($_SERVER['HTTP_USER_AGENT']) || stripos($_SERVER['HTTP_USER_AGENT'], 'Speed Insights') === false): ?>
// your analytics code here
<?php endif; ?>
显然,这不会带来任何真正的改善,但如果你唯一关心的是获得100/100的分数,这就可以了。
在新选项卡中打开https://www.google-analytics.com/analytics.js文件,复制所有代码。
现在在你的网页目录中创建一个文件夹,重命名为google-analytics。
在同一个文件夹中创建一个文本文件,并粘贴上面复制的所有代码。
将文件重命名为ga-local.js
现在更改URL,在谷歌分析代码中调用本地托管的分析脚本文件。它看起来像这样,即https://domain.xyz/google-analytics/ga.js
最后,把你的新谷歌分析代码放在你的网页的页脚。
你可以出发了。现在检查你的谷歌PageSpeed Insights网站。它将不会显示杠杆浏览器缓存谷歌分析的警告。这个解决方案的唯一问题是,定期手动更新分析脚本。