1
votes

I could find a new (at least new for me) code for Google analytics. If I understand, it loads in asynchronously (at least there is the word async in the code). I used that code in a page of my site and Google Page Speed still says: Leverage browser caching http://www.google-analytics.com/ga.js

Is that the the last and best code to keep track of your Analytics? What is the best way to put the Google Analytics and have a good response in Page Speed?

(you have to substitute UA-XXXXX-Y by your own code)

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

<!-- Google Analytics -->
<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', 'UA-XXXXX-Y', 'auto');
ga('send', 'pageview');
</script>
<!-- End Google Analytics -->
2

2 Answers

3
votes

Embedded Google Analytics: Fix “Leverage Browser Caching” Warning on Nginx

<html>

    <!-- ... -->

    <!-- Embed analytics.js as local file -->
    <script src="/analytics.js"></script>
</html>

in your nginx.conf

server {

    ### ...

    location = /analytics.js {
        # Proxy to google-analytics.com
        proxy_pass https://www.google-analytics.com;

        # Custom expires time
        expires 1y;
    }

    ### ...
}
2
votes

In this case it's saying that the cache expiration header is not set long enough. If you go to https://www.google-analytics.com/ga.js and use an inspector for the response you'll see that the expires header is set to two hours from the request. Obviously, since this is hosted by Google, you have no control over that.

What you would have to do is copy the Google Analytics js file and host it yourself, then you could set the cache expiration to whatever you want. If you decide to do this it would probably be a good idea to set up a process to watch for changes to google's file so you don't miss anything though.