PageSpeed OptiPic — автоматическая оптимизация сайта для требований Google Pagespeed Insights
JavaScript: Слияние, сжатие, ленивая загрузка. CSS: Сжатие размера и оптимизация загрузки. Оптимизация изображений. Оптимизация сторонних виджетов и систем аналитики.

Font-awesome CDN JS отображается как блокирующий рендеринг в Pagespeed Insights

Вместо прямой ссылки на CSS Font Awesome, я использую JS из Font Awesome CDN, чтобы позволить асинхронную загрузку иконок на домашней странице, но Pagespeed Insights Google все еще отмечает его как блокирующий рендеринг JS.

Я использую пользовательскую JS-ссылку, предоставленную Font Awesome CDN, и помещаю ее в раздел <head> (я мог бы поместить ее в конец раздела <body>, но именно там Font Awesome CDN просит меня это сделать).

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

И да, я включил асинхронную загрузку, войдя в свою учетную запись на Font-Awesome-CDN.

#1

Как отмечено выше, все внутри <head> блокирует рендеринг.

Другой подход - добавить атрибуты async или defer в тег:

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

или

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

@Anupam предложил (совершенно справедливо) переместить тег в конец тела документа, но даже FontAwesome предлагает также добавить атрибут defer.

У Flavio Copes хорошее объяснение разницы между script async и defer.

#2

Как упоминается в комментарии @GramThanos, все внутри тега <head> блокирует рендеринг. Font-awesome CDN делает загрузку CSS асинхронной, что ускоряет ее, но Google по-прежнему видит JS как блокирующий рендеринг.

Перемещение JS в конец тега <body> помогло избежать блокировки рендеринга и также избавиться от предупреждения PageSpeed Insights.

#3

Я просто хочу поделиться, как я сократил время загрузки страницы на более чем 50% с помощью всего одного изменения в способе загрузки Font Awesome. Вместо включения тега script напрямую в HTML-файл, я загрузил файл JS программно с помощью 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); 
?