最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - Font-awesome CDN JS showing as render-blocking on Pagespeed Insights - Stack Overflow

programmeradmin1浏览0评论

Instead of directly linking to the Font Awesome CSS, I am using the js from Font Awesome CDN to allow async loading of the icons on the homepage but Google's Pagespeed Insights still marks it as a render-blocking js.

I am using the custom js link provided by Font Awesome CDN and putting it in the <head> section (I could put it towards the end of the <body> also but thats where Font Awesome CDN asks me to put it).

<script src=".js"></script>

And yes, I have turned on Async loading by logging into my account on Font-Awesome-CDN.

Instead of directly linking to the Font Awesome CSS, I am using the js from Font Awesome CDN to allow async loading of the icons on the homepage but Google's Pagespeed Insights still marks it as a render-blocking js.

I am using the custom js link provided by Font Awesome CDN and putting it in the <head> section (I could put it towards the end of the <body> also but thats where Font Awesome CDN asks me to put it).

<script src="https://use.fontawesome.com/mycustomcode.js"></script>

And yes, I have turned on Async loading by logging into my account on Font-Awesome-CDN.

Share Improve this question edited Mar 29, 2018 at 6:07 Anupam asked Mar 27, 2018 at 11:34 AnupamAnupam 15.6k20 gold badges72 silver badges102 bronze badges 2
  • 2 Isn't everything inside the <head> "render-blocking"? The render will not start unless the js file has loaded. This does not means that the rest of the Font Awesome will block the render. – GramThanos Commented Mar 27, 2018 at 12:08
  • @GramThanos: your point makes sense. Font-awesome tries to get it's js to load the css asynchronously but the js itself is render-blocking. To take care of the warning on Google PageSpeed Insights, I have moved the script towards the end of the <body> now – Anupam Commented Mar 27, 2018 at 15:44
Add a comment  | 

3 Answers 3

Reset to default 15

As noted above, everything in the <head> is render-blocking.

Another approach is to include the async or defer attributes in the tag:

<script async src="https://use.fontawesome.com/mycustomcode.js"></script>

or

<script defer src="https://use.fontawesome.com/mycustomcode.js"></script>

@Anupam suggested (rightly) moving the tag to the end of the body, but even FontAwesome suggests including the defer attribute too.

Flavio Copes has a good explanation of script async vs. defer.

As mentioned in @GramThanos's comment, everything inside the <head> is render-blocking. Font-awesome CDN makes the CSS load asynchronously which does speed it up but Google would still see the JS as render-blocking.

Moving the JS near the end of the <body> helped it to not be render-blocking and also get rid of the PageSpeed Insights warning.

I just wanted to share how I reduced the loading page in over 50% with just one change in the way I was loading Font Awesome. Instead of including the script tag directly in the html file, I loaded the js file programmatically via javascript:

var script = document.createElement('script')
script.src = 'https://use.fontawesome.com/releases/v5.8.2/js/solid.js'
document.head.appendChild(script);

script = document.createElement('script')
script.src = 'https://use.fontawesome.com/releases/v5.8.2/js/brands.js'
document.head.appendChild(script);

script = document.createElement('script')
script.src = 'https://use.fontawesome.com/releases/v5.8.2/js/fontawesome.js'
document.head.appendChild(script);
发布评论

评论列表(0)

  1. 暂无评论