我正在追求达到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,同时也使用谷歌分析?

谢谢你!


当前回答

对于Nginx:

location ~ /analytics.js {
        proxy_pass https://www.google-analytics.com;
        expires 31536000s;
        proxy_set_header Pragma "public";
        proxy_set_header Cache-Control "max-age=31536000, public";
    }

将路径https://www.google-analytics.com/analytics.js修改为https://yoursite.com/analytics.js

其他回答

您可以尝试在本地托管analysis .js,并使用缓存脚本或手动更新它的内容。

js文件每年只更新几次,如果你不需要任何新的跟踪功能,就手动更新它。

https://developers.google.com/analytics/devguides/collection/analyticsjs/changelog

对于Nginx:

location ~ /analytics.js {
        proxy_pass https://www.google-analytics.com;
        expires 31536000s;
        proxy_set_header Pragma "public";
        proxy_set_header Cache-Control "max-age=31536000, public";
    }

将路径https://www.google-analytics.com/analytics.js修改为https://yoursite.com/analytics.js

在新选项卡中打开https://www.google-analytics.com/analytics.js文件,复制所有代码。

现在在你的网页目录中创建一个文件夹,重命名为google-analytics。

在同一个文件夹中创建一个文本文件,并粘贴上面复制的所有代码。

将文件重命名为ga-local.js

现在更改URL,在谷歌分析代码中调用本地托管的分析脚本文件。它看起来像这样,即https://domain.xyz/google-analytics/ga.js

最后,把你的新谷歌分析代码放在你的网页的页脚。

你可以出发了。现在检查你的谷歌PageSpeed Insights网站。它将不会显示杠杆浏览器缓存谷歌分析的警告。这个解决方案的唯一问题是,定期手动更新分析脚本。

谷歌Analytics js库中有一个名为ga-lite的子集,你可以根据自己的需要进行缓存。

该库使用谷歌Analytics的公共REST API将用户跟踪数据发送到谷歌。你可以从博客文章中读到更多关于ga-lite的信息。

声明:我是这个库的作者。我为这个特定的问题而挣扎,我发现最好的结果就是实现这个解决方案。

varvy.com(100/100谷歌页面速度洞察)只在用户滚动页面时才加载谷歌分析代码:

var fired = false;

window.addEventListener("scroll", function(){
    if ((document.documentElement.scrollTop != 0 && fired === false) || (document.body.scrollTop != 0 && fired === false)) {

        (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','//www.google-analytics.com/analytics.js','ga');

        ga('create', 'UA-XXXXXXXX-X', 'auto');
        ga('send', 'pageview');

        fired = true;
    }
}, true);