Как сделать JS асинхронным и устранить ненужный JS?


Мне сказали, что это можно сделать с помощью модуля Magic, но я нигде не смог найти документацию\видео\readme для этого, поэтому я спрашиваю, как сделать эти конкретные вещи с ним на моем сайте Drupal 7:

  1. Как сделать JS асинхронным?
  2. Как устранить ненужный JS?

Мне это нужно для того, чтобы попытаться выполнить известный совет Page spp insights "Устранить блокировку рендеринга JS над содержимым сгиба". Спасибо.

Обновление: Это можно сделать с помощью Модуль AdvAgg легко, смотрите следующий ответ Mikeytown2:

Author: Community, 2015-06-17

2 answers

AdvAgg может переместить JS в нижний колонтитул, а также отложить его с минимальными проблемами. Он также может асинхронно загружать JS, но это приводит к плохим последствиям, так как drupal/jQuery небезопасен для асинхронности. Настройка async => TRUE через hook_js_alter работает, просто будьте осторожны, так как скрипт должен быть асинхронно безопасным. Вы также можете установить атрибут асинхронности в массиве параметров при использовании drupal_add_js.

Он также может асинхронно загружать CSS, но это приводит к появлению нестайлированного контента. Проблема, чтобы исправить это: Встроенный критический css

Смотрите Изменить порядок загрузки Javascript в теме? для примера, как это делает AdvAgg. AdvAggreadme немного устарел, но указывает вам правильное направление, как получить более высокий показатель скорости просмотра страниц.

Также предложит http://www.webpagetest.org/

 1
Author: mikeytown2, 2017-04-13 12:47:08

Вы можете использовать async_js для асинхронной загрузки.

И в hook_js_alter вы можете удалить файлы js, которые вы не хотите иметь на странице.

Вы также можете разместить JS в нижней части страницы в вашей теме html.tpl.php , путем печати

<?php print $scripts; ?>

Непосредственно перед тегом </body>.

 2
Author: rémy, 2015-06-17 12:25:22