Есть CMain::AddHeadScript, который добавляет скрипты в <head></head>.
Но для ускорения загрузки сейчас в основном верстают так, что скрипты подключаются в футере.
По-моему, уже почти все написали свои отложенные функции для этого, но они не работают с CDN и не сжимают файлы.
Было бы хорошо иметь встроенный механизм для этого.
Сейчас найти не могу, увы.
Я очень не люблю мейнстримы, не верю им. Пока в этой фишке галимый мейнстрим.
А еще хорошо бы новым счетчиком Битрикса замерить до и после.
Поэтому и написал - нужны замеры. Только тогда мы вендоров заставим пересмотреть подходы.
Я не исключаю, что я не прав, да и не доказываю здесь свою правоту.
К сожалению, метод требует вмешательства в init.php, что лично мне кажется равносильно лоботомии при слабой головной боли.
Поэтому и написал - нужны замеры. Только тогда мы вендоров заставим пересмотреть подходы.
Я не исключаю, что я не прав, да и не доказываю здесь свою правоту.
Достаточно подключить файлы в футере на любом сайте, зайти в инструменты браузера (консоль разработчика или FireBug) и посмотреть на события DOMContentLoaded (загрузка DOM) и load (полная загрузка).
Еще есть хороший инструмент :
Более того все чаще клиенты обращают на него внимание, и уже в некоторых моих проектах прописывается условие набора не меньше определённого количества баллов (как пример 85) в этом сервисе.
На всякий случай напишу:
Разделение файлов по параметру, или стандарту названия (script.js , script_fr.js*, script_cr.js** , style.css, style_fr.css* , style_cr.css**) на:
1. асинхронные и обычные (для скриптов);
2. подключаемые в футере и хедере;
3. Создания объединённого критического .css и .js , который будет инлайниться в хедере, для вхождения в первые 14 кБайт и моментального показа первых 1000 пикселей страничек сайта.
Если идеи бредовые - извините.
* - script_fr.js для футера
** - script_cr.j критическая часть скриптов и стилей, инлайняться в хедере.
Без технологии Композитный сайт.
При том, что первая загрузка странички (приватный просмотр, чистый кэш):
DOMContentLoaded - ~850 ms
load - ~870 ms
повторная, и все остальные:
DOMContentLoaded - ~500 ms
load - ~520 ms
Что бы обойти хотя бы пункты сжатия файлов kernel_main.js и kernel_main.css .
Подробнее можно посмотреть в /bitrix/modules/main/lib/page/asset.php
Надеюсь подобный параметр перекочует в addJs(...), а в AssetLocation появится константа на подобе BEFORE_BODY_END