Почему Magento 2 очень медленный?

31

Я использовал Magento 1.9, и это было хорошо. Это было не так быстро, как простой сайт Joomla, но у меня было много клиентов без проблем.

Теперь я хотел обновить свой сайт до Magento 2, я купил новый хост (такой же, как у меня сейчас) и установил Magento 2 без демонстрационных данных и это неудобно для использования. Не только администратор, но и пустая домашняя страница также занимает минуты загрузить, и когда я пытаюсь создать учетную запись, я получаю сообщение об ошибке «Достигнут лимит ресурсов»

Я пробовал с Facebook FlashCache, OptimumCache и Cloudflare, но ничего не изменилось, хотя создатели сказали, что Magento 2 намного быстрее, чем первая версия.

Я хотел бы понять, почему они не могут это исправить после стольких лет и почему так много людей используют это?

Есть ли способ его закрепить?

ОБНОВИТЬ:

Я использовал mgt-commerce и раньше, и это было невероятно быстро, загрузка заняла менее 2 секунд, но это стоило слишком дорого: цена AWS + 199,00 €

Они предложили php7 / HHVM, Varnish, Redis, CDN, NGINX по умолчанию. Наверное, поэтому это было быстро.

Мне пришлось купить учетную запись Amazon WS, я не знаю, почему, я думаю, мой сайт на самом деле был размещен на Amazon.

Я ищу ту же скорость по более низкой цене. Пример провайдера VPS.

Я осмотрелся, но обнаружил, что каждый хостинг-провайдер утверждает, что у них есть хостинг Magento. Siteground, Mochahost, Hostgator, Fastcomet и т. Д.

Может быть, есть хостинг-провайдер, который установил бы эти кэши, чтобы победить конкурентов

PS: Извините, если мой пост кажется глупым для программистов, я бы выбрал экономику, коммерцию и маркетинг в университете, к сожалению :(

petetcap
источник
Можете ли вы объяснить, что вы пробовали с Facebook FlashCache, OptimumCache и Cloudflare, пожалуйста?
mbalparda
1
Похоже, проблема окружающей среды. На моем виртуальном компьютере открыта домашняя страница cms / без FPC <0,1 с и с FPC <0,01 с
KAndy
отключить css / js, объединяющие магазины> конфигурация> продвинутый> разработчик см. мой комментарий здесь magento.stackexchange.com/questions/150073/…
Константин Герасимов
2
Я начинаю с M2 и очень разочарован его производительностью. Если вашему программному обеспечению требуется тысяча кешей для одного пользователя, значит что-то не так. Я надеюсь, что скоро передумаю.
Рикардо Мартинс
@ Кэнди, можешь написать, какой виртуальной машиной ты пользуешься? Если вы используете vagrant, можно ли поделиться сценарием инициализации? Я пробовал несколько виртуальных машин, но все они не работали. Установка Magento прошла успешно, но страницы не загружаются.
Алан

Ответы:

24

Для улучшения производительности Magento 2 доступно несколько ресурсов, и все они довольно хорошо документированы.

Режим: в Magento 2 введены режимы, которые по умолчанию являются самыми медленными. Попробуйте в режиме разработчика и всегда работайте с живым магазином в производственном режиме. Больше информации здесь .

Кэш: Лак поддерживается из коробки, довольно прост в настройке и использовании.

Redis: Redis - это необязательное решение для кеширования бэкэнда Zend_Cache_Backend_File, которое используется в Magento 2 по умолчанию. Может использоваться для хранения сеансов и кэширования страниц.

Memcache: Memcached - это хранилище значений ключей в памяти для небольших фрагментов произвольных данных (строк, объектов) из результатов вызовов базы данных, вызовов API или рендеринга страницы. В Magento 2 его можно использовать для сессий .

PHP 7: Magento 2 совместим с PHP 7 из коробки. Существует много исследований о том, как PHP 7 влияет на производительность навсегда.

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

Если вы не знаете, как сделать это самостоятельно, существует множество компаний, специализирующихся на хостинге Magento.

Для довольно прочной среды разработки моя личная рекомендация - это Paliarush 'Vagrant или виртуальная машина, которую я получил от Magento для курсов. Скоро появится официальное изображение докера.

mbalparda
источник
9

Magento работает достаточно хорошо даже в режиме разработчика. Это требует некоторой начальной настройки, хотя.

Сначала убедитесь, что Magento настроен правильно, предполагая, что вы используете Ubuntu:

Используйте последнюю сборку, так как Magento 2.2+ поддерживает php 7.1 http://devdocs.magento.com/guides/v2.2/install-gde/prereq/php-ubuntu.html.

sudo apt-get install php7.1 php7.1-imap php7.1-xml php7.1-dom php7.1-intl

Если вы используете несколько версий php, установите 7.1 по умолчанию через

sudo update-alternatives --set php /usr/bin/php7.1

На Magento

  1. Установите для разработчика, если еще не php -f bin/magento deploy:mode:show

    php -f bin/magento deploy:mode:set developer

  2. Проверьте, включен ли кеш Magento

    php -f bin/magento cache:status

Если не включен (серия 1)

php -f bin/magento cache:enable

Включить JS / CSS связывание

Магазины> Конфигурация> Дополнительно> Разработчик

* Обратите внимание, что вышеуказанный пункт меню отображается только в режиме разработчика

Настройки шаблона

  • Сократить HTML = Да

Настройки Javascript

  • Объединить файлы JS = Да

  • Включить JS Bundling = Да

  • Сократить файлы JS = Да

Настройки CSS

  • Объединить CSS = Да
  • Сократить CSS = Да

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

php -f bin/magento cache:flush

Продвинутая комплектация

Этот пост сам по себе будет следовать рекомендациям magento devdocs о том, как это сделать, это может еще больше увеличить загрузку JS-интерфейса и сделать его в 3 раза быстрее.

Используйте Redis

sudo apt-get update
sudo apt-get install build-essential tcl8.5
sudo apt-get install make
wget http://download.redis.io/redis-stable.tar.gz
tar xvzf redis-stable.tar.gz
cd redis-stable
make
cd utils/
sudo ./install_server.sh

Изменить /www/project/app/etc/env.php

'cache' => 
  array (
    'frontend' => 
    array (
      'default' => 
      array (
        'backend' => 'Cm_Cache_Backend_Redis',
        'backend_options' => 
        array (
          'server' => '127.0.0.1',
          'database' => '0',
          'port' => '6379',
        ),
      ),
      'page_cache' => 
      array (
        'backend' => 'Cm_Cache_Backend_Redis',
        'backend_options' => 
        array (
          'server' => '127.0.0.1',
          'port' => '6379',
          'database' => '1',
          'compress_data' => '0',
        ),
      ),
    ),
  ),

Использовать PHP-FPM

apt-get install php7.1-fpm
a2enmod proxy_fcgi setenvif
a2enconf php7.1-fpm
sudo service php7.1-fpm restart
sudo service apache2 restart

Включить opcache в PHP

Отредактируйте /etc/php/7.1/apache2/php.ini find opcache.enable

opcache.enable=1

Я также рекомендовал бы использовать облачную базу данных, такую ​​как AWS RDS или другую, это избавит вас от головной боли при настройке mysql.

Если вы сейчас включите производственный режим php -f bin/magento deploy:mode:set production

Вы должны найти, что он работает достаточно хорошо.

Взяв это дальше, вы можете добавить Varnish, Switch to Nginx, добавить CDN для статических файлов.

Джоэл Дэйви
источник
2

У меня тоже была эта проблема на Macbook Pro (конец 2016 года) с MAMP.

Я хотел создать тему для Magento 2. Я деактивировал все кэши, и мне потребовалось 30 секунд, чтобы перезагрузить страницу (интерфейс и бэкэнд).

Я активировал все кэши с помощью команды «php magento cache: enable», и сайт загружается очень быстро. Я все еще могу работать с Grunt и LESS без деактивации любого типа кэша.

Клевис Михо
источник
1

Magento 2 не медленный по умолчанию. Вы должны выполнить следующие шаги, чтобы сделать это быстро:

  1. Требования к серверу и системе

  2. Обновить версию Magento

  3. Включить Varnish Cache

  4. Настроить Memcached

  5. Включить плоские категории и продукты

  6. Оптимизировать Javascript и CSS

  7. Сеть доставки контента

  8. Используйте легкую тему

  9. Расширения без ошибок

  10. Изображения должны быть полностью оптимизированы

Сайед Муниб Уль Хасан
источник
22
Извините, но если вам нужно добавить несколько уровней кэширования в приложение, то по умолчанию это происходит медленно.
Роберт Эггинтон
Роберт: Чувак, добавление кэша в несколько слоев многоуровневой системы - это правильная архитектура. Мы не говорим кэш за кешем ... -o-
miracules
Использование кешей во время разработки не является оптимальным решением. Очистка кэша каждый раз, когда вносятся изменения, больше напоминает разработку на скомпилированном языке, а не на PHP.
Алан
0

Как вы думаете, Magento 2 работает медленно? Мой сайт, который использует очень тяжелую тему, набирает 93/100 баллов по скорости страницы, а время загрузки составляет 2 секунды. Я бы сказал, лучше выбрать хостинг для Magento, потому что ваш веб-сервер играет большую роль в производительности вашего сайта. Что касается режима «по умолчанию», который является самым медленным, не соответствует действительности. Я запустил свой магазин в режиме по умолчанию, пока я не был готов переключиться в производственный режим, и он набрал 91/100 в режиме по умолчанию и только перешел на 93/100 после перехода в производственный режим.

Получите лучший хост и лучший веб-сервер, если вы действительно хотите использовать Magento 2.

Джеймс Стаббс
источник
По истечении magento cache:disableвремени загрузки более 30 секунд.
Том Андерсон