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

谢谢你!


当前回答

您可以尝试在本地托管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

在谷歌文档中,他们已经确定了一个页面速度过滤器,将异步加载脚本:

ModPagespeedEnableFilters make_google_analytics_async

您可以在这里找到文档:https://developers.google.com/speed/pagespeed/module/filter-make-google-analytics-async

需要强调的一点是,过滤器被认为是高风险的。从文档中可以看出:

make_google_analytics_async过滤器是实验性的,还没有经过广泛的实际测试。重写会导致错误的一种情况是,如果过滤器错过了对返回值的谷歌Analytics方法的调用。如果找到这样的方法,重写将被跳过。但是,如果取消资格的方法在加载之前出现,在诸如“onclick”之类的属性中,或者在外部资源中,则会错过它们。这些病例预计是罕见的。

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

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

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

谷歌警告不要使用分析脚本的本地副本。 然而,如果你正在这样做,你可能会想要使用本地副本的插件和调试脚本。

关于主动缓存的第二个问题是,您将从缓存的页面获得点击——这些页面可能已经从站点中更改或删除了。

2020年,Page Speed Insights用户代理为:移动端“Chrome-Lighthouse”和桌面端“谷歌Page Speed Insights”。

<?php if (!isset($_SERVER['HTTP_USER_AGENT']) || stripos($_SERVER['HTTP_USER_AGENT'], 'Chrome-Lighthouse') === false  || stripos($_SERVER['HTTP_USER_AGENT'], 'Google Page Speed Insights') === false): ?>
// your google analytics code and other external script you want to hide from PageSpeed Insights here
<?php endif; ?>