Как сделать JS асинхронным и устранить ненужный JS?
Мне сказали, что это можно сделать с помощью модуля Magic, но я нигде не смог найти документацию\видео\readme для этого, поэтому я спрашиваю, как сделать эти конкретные вещи с ним на моем сайте Drupal 7:
- Как сделать JS асинхронным?
- Как устранить ненужный JS?
Мне это нужно для того, чтобы попытаться выполнить известный совет Page spp insights "Устранить блокировку рендеринга JS над содержимым сгиба". Спасибо.
Обновление: Это можно сделать с помощью Модуль AdvAgg легко, смотрите следующий ответ Mikeytown2:
2 answers
AdvAgg может переместить JS в нижний колонтитул, а также отложить его с минимальными проблемами. Он также может асинхронно загружать JS, но это приводит к плохим последствиям, так как drupal/jQuery небезопасен для асинхронности. Настройка async => TRUE
через hook_js_alter работает, просто будьте осторожны, так как скрипт должен быть асинхронно безопасным. Вы также можете установить атрибут асинхронности в массиве параметров при использовании drupal_add_js.
Он также может асинхронно загружать CSS, но это приводит к появлению нестайлированного контента. Проблема, чтобы исправить это: Встроенный критический css
Смотрите Изменить порядок загрузки Javascript в теме? для примера, как это делает AdvAgg. AdvAggreadme немного устарел, но указывает вам правильное направление, как получить более высокий показатель скорости просмотра страниц.
Также предложит http://www.webpagetest.org/
Вы можете использовать async_js для асинхронной загрузки.
И в hook_js_alter вы можете удалить файлы js, которые вы не хотите иметь на странице.
Вы также можете разместить JS в нижней части страницы в вашей теме html.tpl.php , путем печати
<?php print $scripts; ?>
Непосредственно перед тегом </body>
.