Я решаю проблему с блокировкой рендеринга JavaScript в Magento-1.9.x следующим образом:
<script src="filename.js"></script>
Replace with Following:
<script src="filename.js" defer></script>
<script src="filename.js" async="async"></script>
или
<action method="addJs"><script>prototype/prototype.js</script></action>
Replace with Following:
<action method="addJs"><script>prototype/prototype.js</script><params>defer</params></action>
<action method="addJs"><script>prototype/prototype.js</script><params>async</params></action>
Подсказки: он может найти на базовую тему
app \ design \ frontend \ base \ default \ layout \ page.xml о строке: 38,
Если вы используете активную тему другого пути ex для rwd как app \ design \ frontend \ base \ default \ layout \ page.xml
Техника, описанная "Mohan Gs", здесь не сработает.
Из-за пути js
/media/js/
кажется, что он использует js merging . Это означает, что все файлы js добавляются стандартным способом xml<action method="addJs">...
<action method="addItem"><type>js</type>..
будут объединены в один большой
/media/js/<hash>.js
.Добавлены js-файлы Magento core
<action method="addJs"><script>prototype/prototype.js</script></action>
Сюда тоже.
Есть также много шаблонов, использующих встроенный js, который зависит от объектов / функций, которые определены файлами head js.
На данный момент, это не достаточно, чтобы переместить только файлы JS головы вниз. Вы должны переместить все встроенные объявления js после заголовка js и перед ним
</body>
тоже.Во всех / многих случаях невозможно отделить встроенные j от шаблонов, потому что они используют переменные, специфичные для шаблона.
Вы можете использовать только общий метод, такой как синтаксический анализ окончательного HTML и перемещать все это вместе и в правильном порядке.
Итак, взгляните на расширение Pagespeed .
источник
Этот код говорит, что дождитесь загрузки всего документа, а затем загрузите внешний файл
defer.js
.Это шаги, которые вам нужно выполнить.
Скопируйте код выше.
Вставьте код в HTML прямо перед
</body>
тегом (в нижней части HTML-файла).Измените
defer.js
имя вашего внешнего файла JS.Убедитесь, что путь к вашему файлу правильный. Пример: если вы просто положите
defer.js
, файлdefer.js
должен находиться в той же папке, что и ваш HTML-файл.Для более подробной информации, обратитесь к этой статье
источник
Вот расширение с открытым исходным кодом, чтобы решить, что https://github.com/mediarox/pagespeed
Текущие функции
Совместимость
С Magento 1.5.x до Magento 1.9.x.
Конфигурация сервера
Все модули (Pagespeed_Js, Pagespeed_Css) по умолчанию отключены.
Путь конфигурации: Система> Конфигурация> ДОПОЛНИТЕЛЬНО> Скорость страницы
Как это устроено ?
Просто проанализируйте окончательный HTML-поток по событию "controller_front_send_response_before".
источник