Асинхронная загрузка JavaScript в Magento для PageSpeed

1

Я пытаюсь оптимизировать свой веб-сайт 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?

Заранее спасибо.

Теги:
performance
magento
pagespeed
magento-1.9

2 ответа

1
Лучший ответ

В итоге решение с js появилось с расширением, которое перемещает все js в конце dom и, похоже, не создает проблемную загрузку страницы.

Расширение называется просто pagespeed и связано с mediarox. Я оставлю ссылку здесь, только для справки, пока она будет продолжать работать.

Magento Google PageSpeed Расширение Оптимизации

В любом случае мне пришлось настроить расширение таким образом, чтобы мои пользовательские таблицы стилей загружались в начале dom, потому что другим способом видно, что DOM загружен и готов намного до таблицы стилей, и был дан ужасный эффект.

Очень хорошие результаты и улучшения приходят также с apache mod_pagespeed и с mod_expires and mod_headers хорошо настроенными.

С этими небольшими изменениями мы получили хорошие результаты, но лучше всего, в основном, из сжатия изображений и минимизации активов.

0

Вы также можете использовать "defer", чтобы загрузить их в конец, который можно использовать с или без async.

Поэтому, если вы загрузите их с помощью "defer" в том порядке, в котором вам нужно, они не должны бросать исключения, если только вы не используете что-либо, требуемое до их загрузки.

  • 0
    ты имеешь в виду перемещение в конце только тех файлов, которые не нужны вышеупомянутому контенту? это довольно сложно с magento и понять, страница за страницей, что нужно раньше или позже ... я пытаюсь идти по этому пути, но не кажется таким безопасным

Ещё вопросы

Сообщество Overcoder
Наверх
Меню