Уважаемые коллеги
специально зарегился, поделиться своей находкой.
уже несколько дней пытался разобраться с тем как отложить синт.анализ js
отмечу, на моем сайте абсолютно не работает JCH_Optimize(роняет весь сайт и админку
), хз почему.
Один из вариантов правильно откладывать синт. анализ добавление в <script> тега async и/или defer, их можно использовать вместе(но нужно понимать зачем), async пришел с html5(просто для справки)
Решение Joomla 2.5.8(думаю будет работать даже на 1.6, судя по документации) срабатывает почти для всех(или всех, зависит от того как они объявляются) скриптов на сайта,
сразу!Файл
libraries\joomla\document\document.php
строка 461
Заменяем:
public function addScript($url, $type = "text/javascript", $defer = false, $async = false)
На:
public function addScript($url, $type = "text/javascript", $defer = true, $async = true)
т.е. правим $defer = true, $async = true или что-то конкретное, думаю понятно
это ВСЕ
Внимательно проверьте работу скриптов после этих манипуляций, например у меня отваливалась админка, замерали галереи и т.п.
Какие-то скрипты, вполне возможно, должны выполняться до загрузки сайта, тогда будут проблемы
еще можно поиграться с обявлением defer и acync
в файле
libraries\joomla\document\html\renderer\head.php
строки 161
$buffer .= ' defer="defer"';
и 165
$buffer .= ' async="async"';
Можно попробовать сделать defer="" или просто defer (аналогично async), так же убрать лишние пробелы, короче разные комбинации. Но по факту должно работать по дефолту.
Насколько я понял правильно все же использовать defer, а не defer="defer", но работает все равно как )
Еще есть вариант использовать extsrc вместо src в том же head.php
На моем сайте, к сожалению до конца не сработало, т.е. работает через раз, похоже зависит от ширины канала и скорости загрузки, скрипты стали выполняться через раз
поэтому похоже придется работать с каждым объявлением скрипта отдельно...
Не сочтите за рекламу, оптимизировал сайт
http://insecta.cc/P.S.
http://docs.joomla.org/JDocument::addScript/1.6 спасибо документации
P.P.S. хорошие статьи на тему:
http://www.codeproject.com/Articles/307720/The-async-and-defer-Script-Attributes-in-HTML5http://peter.sh/experiments/asynchronous-and-deferred-javascript-execution-explained/очень советую разобраться поподробнее с этим если есть время :
https://developers.google.com/speed/docs/best-practices/payload#DeferLoadingJShttp://www.rusdigi.name/useful/asinkhronnaya-zagruzka-skriptov-atribut-asyncP.P.P.S. включил кэширование на сайте, Google дает 97 из 100 сайту, думаю мне хватит