Как добиться максимальной эффективности с Magento 2. Интервью с Максом Пронько
Опубликовано: 2017-01-17Макс Пронко — один из тех гуру Magento, которым должен следовать новичок. Он эксперт Magento и оратор, сертифицированный разработчик Magento и популярный блогер Magento 2.
Обладая 10-летним опытом разработки программного обеспечения и консультирования в Magento, Макс успешно спроектировал и внедрил высококачественные продукты среднего и крупного масштаба.
Следите за Максом в Твиттере.
Недавно Макс был на встрече с Magento в Венгрии и представил реальные примеры использования оптимизации производительности в основной презентации Magento 2. В связи с этим мы хотели бы начать наше интервью с пары вопросов, которые имеют прямое отношение к данной презентации.
Часть 1: Общие проблемы с расширениями Magento
Почти каждый продавец Magento 2 использует сторонние расширения, которые, с одной стороны, значительно улучшают функциональность платформ по умолчанию, но, с другой стороны, негативно влияют на производительность рабочего процесса.
Натали: В целом, как вы оцениваете качество кода сторонних расширений и то, как они могут влиять на нагрузку на сервер?
Макс: Спасибо за возможность поговорить о Magento 2, Натали. Я слежу за вашим блогом больше года, и каждый раз, когда я посещаю его, я нахожу интересные статьи. Спасибо тебе за это.
Как вы, возможно, знаете, мне нравится проверять код по ряду причин:
- Во-первых, я набираюсь опыта и наблюдаю за интересными методами преобразования бизнес-требований в полнофункциональные высококачественные функции. Особенно когда речь идет о Magento 2.
- Во-вторых, это помогает мне понять, насколько хорош обмен знаниями в экосистеме Magento.
95% сторонних расширений требуют подробного анализа кода и рекомендаций по его улучшению.
Я занимаюсь обзором кода сторонних расширений уже около 2 лет. К сожалению, я не могу сказать, что доволен полученными результатами: 95% сторонних расширений требуют тщательного анализа кода и рекомендаций по его улучшению. Позвольте мне помолчать о стандартах кодирования.
У меня возникают проблемы с производительностью всех страниц веб-сайта, даже если расширение создает и охватывает только некоторые страницы с определенными функциями. Например, включение некэшируемого блока в файл конфигурации макета по умолчанию. Magento автоматически отключает кеш страниц для всех страниц.
Другой пример — использование трудоемких внутренних операций без сохранения результатов выполнения в переменной класса. Это может значительно снизить загрузку первой страницы.
У меня была возможность просмотреть около 60 расширений, включая платные и бесплатные, поэтому мой рейтинг основан на этом числе. Конечно, есть расширения, которые я могу порекомендовать использовать.
Натали: Каковы, по вашему мнению, наиболее частые проблемы с оптимизацией кода?
Я никогда не видел использования прокси-классов в сторонних расширениях. Однако это может сократить время инициализации рекурсивного объекта.
Макс: Обычно расширения создаются за один раунд без оптимизации производительности, которую я могу назвать «внедрить и доставить». Второй раунд наступает редко, и код остается неоптимизированным. Например, я никогда не видел использования прокси-классов в сторонних расширениях . Однако это может сократить время инициализации рекурсивного объекта.
Натали: Какой совет по оптимизации вы можете дать тем начинающим разработчикам, которые пишут свои первые расширения для Magento 2?
Макс: Это отличная идея — протестировать свои расширения с Magento 2 за пределами локальной среды, предпочтительно где-нибудь в облаке. В настоящее время не дорого иметь виртуальный сервер от DigitalOcean или AWS за 5-10 долларов и проводить базовое сквозное пользовательское тестирование . По крайней мере, он может показать неплохие различия в производительности по сравнению со стандартными версиями Magento 2.x.
Часть 2: Оптимизация производительности M2
Натали: Что вы можете сказать об особенностях блочного кеша (что лучше использовать/избегать в кеше ключей)?
Макс: Magento 2 Community Edition поставляется с поддержкой прокси-сервера Varnish. Это отлично подходит для всех продавцов, которые не беспокоятся о новых посетителях, когда кеш не готов. Кэш блоков вступает в игру для страниц, которые не хранятся в Varnish. Вы можете не ожидать Varnish на таких страницах, как «Учетная запись клиента», «Поиск по каталогу», «Корзина».
Правильный ключ кеша для каждого блока очень важен для создания правильных записей в кеше и увеличения количества попаданий кеша в серверное хранилище, такое как Redis. В идеале все объекты, участвующие во внешнем рендеринге, должны реализовывать интерфейс Magento\Framework\DataObject\IdentityInterface , который поставляется с методом getIdentities() . Этот метод очень полезен, если вам нужно скомпилировать правильные ключи кеша для блочного кеша.
Натали: Что-нибудь об оптимизации SQL-запросов?
Макс: Для оптимизации SQL я обычно стараюсь перечислить все возможные варианты данных, выбранные из таблицы. В идеале все запросы должны попадать в индексы MySQL для повышения производительности. Я знаю, что это идеальный случай, однако он действительно может помочь ускорить запросы к большому количеству записей в таблице. Конечно, оптимизация SQL-запросов — это огромная тема, поэтому я могу говорить о ней часами.
Часть 3: Поиск Magento 2
Magento 2 может похвастаться лучшим встроенным поиском, чем M1, но все равно не поддерживаются сложные запросы, опечатки, автозамена, синонимы. Кроме того, поиск М2 не сканирует категории и страницы CMS.
Натали: Как лучше всего улучшить поиск в CE edition: расширения или внешние поисковые системы?
Макс: Я рассматриваю возможность использования Elasticsearch для Magento 2 Community Edition. Конечно, это требует разработки как внутри компании, так и с использованием сторонних расширений. Для одного из проектов Magento 2 мы использовали встроенный поиск с дополнительной настройкой, такой как синонимы и перенаправления на целевую страницу для общих поисковых запросов. Однако это краткосрочное решение, я бы выбрал какой-нибудь внешний сервис.
Натали: Говоря о внешних поисковых системах, какая из них лучше подходит для небольших/средних/больших сайтов данных: Solr, Sphinx или Elasticsearch (или какая-то другая)?
Макс: Для небольших веб-сайтов я бы рассматривал поиск Magento 2 по умолчанию. Для других это больше о том, насколько хороши расширение и документация, если вы хотите создать собственное решение. Elasticsearch является моим предпочтительным вариантом.
Натали: Можете ли вы порекомендовать поисковые расширения, которые могут улучшить функциональность по умолчанию?
Макс: У меня есть опыт обзора модуля автозаполнения для Magento 2, сделанного MageWorx. Это значительно улучшает взаимодействие с пользователем по сравнению с функцией автоматического предложения Magento 2 Community Edition по умолчанию. Модуль MageWorx AutoComplete увеличит количество конверсий и продаж для продавца. Что касается реализации кода, моя оценка составляет 4,5 из 5. Есть несколько незначительных улучшений, которые можно было бы сделать, чтобы улучшить общее впечатление от разработчиков. Одной из приятных особенностей модуля AutoComplete является то, что его можно загрузить бесплатно. Я рассмотрю возможность использования и рекомендую этот модуль для продавцов Magento 2.
Кроме того, я продолжу обзор модулей, связанных с поиском для Magento 2, и дам свои отзывы о качестве кода.
Часть 4: Проблемы Magento 2
Натали: Вы являетесь проверенным разработчиком Magento, после многих лет работы с Magento, какие самые сложные проблемы возникают во второй версии платформы?
Например, насколько я знаю, даже незначительные изменения кода в M2 приводят к ряду действий (таких как установка bin/magento:upgrade, установка bin/magento:static-content:deploy, установка bin/magento:di:compile и т. д. )
Макс: Я думаю, что в большинстве случаев, когда разработчик сидит перед PHPStorm и пишет код, у него нет времени по-настоящему копаться в архитектуре Magento 2. Например, я знаю пару хороших разработчиков, которые жалуются на компоненты пользовательского интерфейса и отсутствие реальных примеров их использования. Новые Magento DevDocs дают хороший обзор компонентов пользовательского интерфейса.
Разработчики с хорошим опытом работы с Magento 1 находят Magento 2 сложной, а иногда и сложной задачей. Новые технологии всегда открывают новые возможности для изучения чего-то нового.
Есть даже картинка об этом.
Натали: И, наконец, Magento 2 был выпущен в ноябре 2015 года. Как вы думаете, он полностью готов к переходу на него продавцов по всему миру?
Макс: Абсолютно ДА. Magento 2 как программное обеспечение имеет больше преимуществ, чем некоторое количество открытых вопросов на GitHub. Очевидно, что это может принести больший доход по сравнению с Magento 1 в случае хорошо спланированной стратегии миграции и маркетинга. Я помню, как сказал «да» одному из наших проектов Magento 2 еще в августе 2015 года, когда это была только бета-версия. Теперь мы более чем рады использовать и создавать веб-сайты электронной коммерции на базе Magento 2.
Моя команда в Pronko Consulting будет рада воплотить в жизнь новое видение и запустить новый веб-сайт на Magento 2.
*****
Мы хотим поблагодарить Макса за это интервью и пожелать ему и его команде продуктивного и успешного года.