Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Asynchronously load to eliminate render-blocking js & css?

I've just spent a really long time googling... and only find half answers everywhere. I am using the google page speed insights to improve my website and it tells me to asynchronously load my javascript. I found a couple of codes, but they didn't explain how to load MORE than one js file AND how to load the css as well. I also couldn't find anywhere where it tells me in what order to load it. Can anyone help?

NOTE: I DID try to move the js to the footer, but then my mobile menu no longer works (which uses the expand.js file)

The Javascript files I need to asynchronously load are:

    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
    <script language="javascript" type="text/javascript" src="js/h5.js"></script>
    <script language="javascript" type="text/javascript" src="js/expand.js"></script>

My CSS:

    <link rel="stylesheet" type="text/css" href="style.css">
like image 916
Shtarley Avatar asked Nov 01 '22 04:11

Shtarley


1 Answers

Asynchronous loading of scripts can get pretty complicated. Have you tried using the async attribute? E.g.:

<script async src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<script async language="javascript" type="text/javascript" src="js/h5.js"></script>
<script async language="javascript" type="text/javascript" src="js/expand.js"></script>

However, this can cause undesired race conditions. All this means is the rest of your site is not going to wait for these three JavaScript files to load before loading other resources. This may or may not improve the speed of your site depending on what is contained, and can produce some wonky results in terms of dependency management which you'll have to account for in your scripts.

It is usually recommended by the big G to create two small files: a CSS and a JavaScript file to be included in your <head/> which contains all the styles and logic for the above-the-fold content (or better yet: inline them, even though this increases the DOM size). Source.

like image 74
MikeZ Avatar answered Nov 11 '22 02:11

MikeZ