Перенос загрузки скриптов JS в футер 2.X

19 сентября 2017 - Feodor
День добрый,

Почему нужно грузить js после контента можно почитать, например тут. Если кратко - это нужно для того, чтобы ускорить загрузку страниц. В блогах и на форуме готового решения не нашел, если пропустил - кидайте в комментах.

На гите инициатива делить теги на те, что нужно грузить в head и те, что в перед потерпела неудачу (возможно, моей аргументации не хватило), поэтому напишу что можно сделать на текущий момент для реализации этой идеи.

На InstantCMS2 есть для этого механизм - почти без танцев, почти без бубна. Но некоторые нюансы есть, поэтому появилось желание оформить это постом.

В чем сложность:
Нам надо оставить часть скриптов сверху, а часть снизу - а функция для вывода js только одна $this->printJavascriptTags. Сверху должна быть статистика и те скрипты, без которых код на странице выдаст ошибки при загрузке.

Решение этой задачи сводится к внесению изменений в один файл шаблона main.tpl.php. Минус в том, что мы больше не сможем использовать методы addMainJS, addControllerJS, addJSFromContext для скриптов, которые нужно загрузить в секцию head, но если на кону скорость загрузки страницы... Еще минус в том, что мы грузим jquery напрямую и возможны ситуации, когда этот скрипт повторно загрузится снизу.. Обычно такого не должно быть, но ситуация возможна.
Решение 1. Подключаем jquery в блоке head напрямую.
В шаблоне вместо
Код PHP:
вставляем строку
Код PHP:
2. Грузим сверху все css и другие теги (сюда могут попасть и js, которые добавлены через функцию addHead)
Заменяем строку
Код PHP:
на
Код PHP:
3. Добавляем перед строку
Код PHP:
После этих замен сверху будут грузиться все стили, jquery и другие теги, которые добавлены через метод addHead.

Остается вопрос - что делать со скриптами, которые обязательно должны грузиться сверху? - их нужно подключать не через addMainJS или addControllerJS. Подключать их теперь нужно только через addHead и тогда они попадут в блок .
Понравилась запись? Поделитесь ею в соцсетях!


Instantcms.ru


Похожие статьи:

Новости разработчиковКомпонент Сервис Ёлок ver.1.1

Новости разработчиковМодуль аккардион статей

Новости разработчиковЗагрузка расширений через админку

Новости разработчиковАнонс модуля "Поощрение пользователей"

Новости разработчиковЗаменяем название компонента, url и т.д. на примере FAQ

Рейтинг: 0 Голосов: 0 21 просмотр
Комментарии (0)

Нет комментариев. Ваш будет первым!