Я пытаюсь оптимизировать свой веб-сайт Magento 1.9.3, следуя подсказкам Google PageSpeed, говоря, что у меня есть js и css, которые загружаются синхронно и блокируют отображение страницы.
Чтобы решить эту проблему, я помещаю все файлы javascript с загрузкой async, как указано в этом ответе.
Итак, все загруженные скрипты выглядят так:
<action method="addItem"><type>skin_js</type><name>js/jquery.fancybox.2.1.5.min.js</name><params>defer</params></action>
<action method="addItem"><type>skin_js</type><name>js/jquery.fancybox.2.1.5.min.js</name><params>async</params></action>
Таким образом, снова запускается страница PageSpeed, дает лучшие результаты.
Проблема в том, что я получаю множество исключений javascript, потому что, вероятно, скрипты, находящиеся внутри файлов шаблонов (.phtml), загружаются до загрузки скрипта. Это хуже, если я очищаю кеш браузера и перезагружаю страницу.
Итак, есть ли лучший способ решить эту "проблему"? Должен ли я перемещать все файлы в конце страницы? Или просто игнорируйте подсказки GooglePageSpeed?
Заранее спасибо.
В итоге решение с js появилось с расширением, которое перемещает все js в конце dom и, похоже, не создает проблемную загрузку страницы.
Расширение называется просто pagespeed и связано с mediarox. Я оставлю ссылку здесь, только для справки, пока она будет продолжать работать.
Magento Google PageSpeed Расширение Оптимизации
В любом случае мне пришлось настроить расширение таким образом, чтобы мои пользовательские таблицы стилей загружались в начале dom, потому что другим способом видно, что DOM загружен и готов намного до таблицы стилей, и был дан ужасный эффект.
Очень хорошие результаты и улучшения приходят также с apache mod_pagespeed
и с mod_expires and mod_headers
хорошо настроенными.
С этими небольшими изменениями мы получили хорошие результаты, но лучше всего, в основном, из сжатия изображений и минимизации активов.
Вы также можете использовать "defer", чтобы загрузить их в конец, который можно использовать с или без async.
Поэтому, если вы загрузите их с помощью "defer" в том порядке, в котором вам нужно, они не должны бросать исключения, если только вы не используете что-либо, требуемое до их загрузки.