CMain::AddFooterScript

Рейтинг: 10.7862  
Новая
Предложил Лех Константин 03.09.2014 13:15:38

CMain::AddFooterScript

Есть CMain::AddHeadScript, который добавляет скрипты в <head></head>.
Но для ускорения загрузки сейчас в основном верстают так, что скрипты подключаются в футере.
По-моему, уже почти все написали свои отложенные функции для этого, но они не работают с CDN и не сжимают файлы.
Было бы хорошо иметь встроенный механизм для этого.

Рейтинг: 0.2497  
Задойный Алексей 04.09.2014 16:09:08
Несколько месяцев назад был коммент на хабре, где кто-то из битриксоидов проговорился что УЖЕ ЕСТЬ подобная штука. Но она не документирована.
Сейчас найти не могу, увы.
Рейтинг: 0.2497  
Долганин Антон 04.09.2014 18:53:37
А есть реальные замеры, показывающие преимущества? :)
Я очень не люблю мейнстримы, не верю им. Пока в этой фишке галимый мейнстрим.

А еще хорошо бы новым счетчиком Битрикса замерить до и после.
Рейтинг: 0.6912  
Долганин Антон 04.09.2014 18:55:39
Поясню. Вот собрались Мозила, Опера, потом еще Гугл. Сделали браузеры. Прекрасно понимают специфику веба (ну Гугл то точно), знают чего не хватают, КАК пишут сайты (а не будем скрывать, что 99% ресурсов в Сети - Говно, и они никогда не исправятся). И? И неужели они не научили свои браузеры правильно кушать скрипты независимо от того как они подключены?

Поэтому и написал - нужны замеры. Только тогда мы вендоров заставим пересмотреть подходы.

Я не исключаю, что я не прав, да и не доказываю здесь свою правоту.  
Рейтинг: 0  
anonymous 27.10.2014 14:33:26
Замеры на Wordpress

Рейтинг: 0.2497  
Задойный Алексей 10.12.2014 16:40:51
Лучше поздно чем никогда.
http://habrahabr.ru/company/bitrix/blog/221805/#comment_7561303

К сожалению, метод требует вмешательства в init.php, что лично мне кажется равносильно лоботомии при слабой головной боли.
Рейтинг: 0.2497  
Долганин Антон 11.12.2014 06:23:26
Алексей, init.php можно читать как "Размещаете в OnEpilog или в Onprolog, или еще каких событиях". Ну в самом деле, почему все читают только то что написано. Зачем вы носите должность "разработчик" тогда?
Рейтинг: -0.2534  
Труш Дмитрий 26.12.2014 14:30:45
Поясню. Вот собрались Мозила, Опера, потом еще Гугл. Сделали браузеры. Прекрасно понимают специфику веба (ну Гугл то точно), знают чего не хватают, КАК пишут сайты (а не будем скрывать, что 99% ресурсов в Сети - Говно, и они никогда не исправятся). И? И неужели они не научили свои браузеры правильно кушать скрипты независимо от того как они подключены?

Поэтому и написал - нужны замеры. Только тогда мы вендоров заставим пересмотреть подходы.

Я не исключаю, что я не прав, да и не доказываю здесь свою правоту.
Думаю Вы и так это знаете, но раз уж спросили.
Достаточно подключить файлы в футере на любом сайте, зайти в инструменты браузера (консоль разработчика или FireBug) и посмотреть на события DOMContentLoaded (загрузка DOM) и load (полная загрузка).
Еще есть хороший инструмент : https://developers.google.com/speed/pagespeed/insights/ , который в последнее время набирает популярности в измерении качества сайта (скорость, отображение на мобильных устройствах). Прогоните сайт до и после изменений размещения скриптом и стилей.
Более того все чаще клиенты обращают на него внимание, и уже в некоторых моих проектах прописывается условие набора не меньше определённого количества баллов (как пример 85) в этом сервисе.
Рейтинг: -0.2534  
Труш Дмитрий 26.12.2014 14:40:49
Есть еще идеи по разделению файлов скриптов, но наверное они не найдут поддержки у разработчиков.
На всякий случай напишу:
Разделение файлов по параметру, или стандарту названия (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 критическая часть скриптов и стилей, инлайняться в хедере.
Рейтинг: -0.2534  
Police King 26.12.2014 14:41:37
Чет мало 85, у меня в режиме dev 84, больше пусть требуют :)
Рейтинг: 0  
Police King 26.12.2014 14:45:25
Мне больше нравится
  • footer.js
  • header.js
  • sync.js
Рейтинг: -0.2534  
Труш Дмитрий 26.12.2014 14:47:34
Чет мало 85, у меня в режиме dev 84, больше пусть требуют
в данном примере 85 - минимальное значение для всех страничек. Попробуйте набрать больше 90 на главной или карточке товара, средне статистического интернет-магазина на битриксе, который использует разделение файлов скриптов и стилей по компонентам.
Рейтинг: 0  
Police King 26.12.2014 14:50:53
Вы не поняли, 84 - это dev-версия сайта
Рейтинг: -0.2534  
Труш Дмитрий 26.12.2014 14:55:50
Вот яркий пример, когда битрикс не дает получить больше 90 баллов:
http://joxi.ru/82QVd6QcjpReAd
Без технологии Композитный сайт.
При том, что первая загрузка странички (приватный просмотр, чистый кэш):
DOMContentLoaded - ~850 ms
load - ~870 ms
повторная, и все остальные:
DOMContentLoaded - ~500 ms
load - ~520 ms
Рейтинг: -0.2534  
Труш Дмитрий 26.12.2014 15:03:13
  • footer.js
  • header.js
  • sync.js
В принципе большой разницы нет ))) Главное, что бы был 1 утверждённый стандарт )
Рейтинг: -0.2534  
Труш Дмитрий 26.12.2014 15:06:10
Прошу голосовать за идею сжатия файлов по параметру в админке (*.js *.css) ядра битрикс к одно строчным: http://idea.1c-bitrix.ru/to-minimize-the-files-js-css-engine/
Что бы обойти хотя бы пункты сжатия файлов kernel_main.js и kernel_main.css .
Рейтинг: 0  
i_Vegas 10.03.2015 14:25:32
В правильном направлении двигаются с методом addString(...) в классе Asset. В указанном методе есть параметр location, который указывает в каком  месте расположить строку.
Подробнее можно посмотреть в /bitrix/modules/main/lib/page/asset.php
Надеюсь подобный параметр перекочует в addJs(...), а в AssetLocation появится константа на подобе BEFORE_BODY_END