Оптимизация веб-сайтов, использующих Magento

Пожалуйста, будьте терпеливы с моим вопросом, так как он может быть немного длиннее.

Если вы посмотрите на Magento и попытаетесь сравнить с любыми другими веб-сайтами электронной коммерции, не поддерживающими PHP, вы обнаружите, что последние сравнительно быстрее. Я знаю, что следующие факторы также работают:

  1. Пропускная способность сервера хостинга
  2. Magento предлагает множество и множество функций, которые другие не предоставляют (и не смогут) с такой гибкостью, как сейчас.
  3. Клиенты/администраторы могут переопределить базовое поведение функций Magento, используя функциональность настраиваемого модуля, что будет немного сложно для других веб-сайтов, отличных от PHP.

Тем не менее, для веб-сайтов, отличных от PHP, программисты могут очень легко использовать концепцию хранимых процедур, с помощью которых они могут загрузить всю базу данных в представление, а затем отключиться от базы данных. Таким образом, всякий раз, когда происходит какой-либо серверный запрос на следующую/предыдущую страницу, сервер просто обращается к представлению, чтобы получить правильные результаты, вместо того, чтобы напрямую обращаться к базе данных.
Также в MySQL 5.0 появилась концепция хранимых процедур, но я не знаю, используется ли это вообще в Magento. Даже если он используется в Magento, будет ли он полезен для Magento, это еще один БОЛЬШОЙ вопрос из-за множества функций, предоставляемых Magento.

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

Пожалуйста, кто-нибудь, у кого есть представление о том, что и как делать, очень поможет каждому пользователю Magento, не только концептуально, но и программно, если это возможно?

Если у кого-то есть другие решения или идеи, поделитесь ими, например, Уильям.


person Knowledge Craving    schedule 30.06.2010    source источник
comment
Вы представляете, сколько всего продуктов у вас будет?   -  person William    schedule 30.06.2010
comment
Наш клиент хочет начать с около 50 тысяч продуктов, которые впоследствии будут увеличиваться в зависимости от объема продаж.   -  person Knowledge Craving    schedule 30.06.2010
comment
Да 50000 это не много. Magento должен работать нормально, даже если вам пришлось внести некоторые изменения. Магазин, над которым я работал, был завершен от начала до конца менее чем за три недели, включая импорт всех данных из нескольких источников данных, предоставленных нам дистрибьюторами, что заняло больше всего времени. Плюс ВСЯ система была переработана, вы даже не можете сказать, что это Magento. Я также переписал страницу оформления заказа, так что это действительно одна страница, без AJAX.   -  person William    schedule 30.06.2010


Ответы (1)


Не так давно я запустил магазин Magento с более чем 400 тысячами товаров, более чем 7000 категорий, более чем 2000 наборов атрибутов и более чем 4 миллионами атрибутов для этих продуктов.

Нам нужно было, чтобы время загрузки составляло ~ 500 мс, и он должен был работать на одном экземпляре памяти Amazon EC2 Extra Large (около 360 долларов в месяц).

Наше решение? Реализовать Solr. Поиск теперь поддерживается Solr, при просмотре каталога мы используем фасеты, чтобы пользователи могли сузить свои результаты по нашим 4 миллионам атрибутов. Проблема заключалась в том, что Magento не позволяет вам сузить результаты, если вы используете значения атрибута «varchar». Поэтому я изменил страницу каталога, чтобы использовать фасеты Solr, а также изменил страницу каталога, чтобы вообще не выполнять никаких запросов к БД, кроме одного. Этому запросу будет предоставлен список идентификаторов, которые вернул Solr, и будет выполнен прямой запрос к ним. Написание этого плагина заняло несколько дней, главным образом потому, что я никогда раньше не использовал Magento.

Последнее изменение, которое мы сделали, — изменили страницу просмотра продукта, чтобы атрибуты отображались намного быстрее. Когда у вас есть миллионы атрибутов, то, как Magento выполнял запрос, это было очень медленно, простая модификация, и это было исправлено.

Самое замечательное, что все это делалось с помощью кастомных плагинов, это совсем не заняло много времени, и магазин прекрасно работает.

Редактировать: также не забудьте установить APC (или альтернативу) и настроить Magento для использования его в своем бэкэнде. Это значительно увеличивает скорость, так как это не только ускорит PHP, Magento был создан для работы с определенными бэкэндами, чтобы ускорить его. Вы также можете делать такие вещи, как хранение кеша Magento в памяти (tmpfs в Linux). Хранение статического контента в CDN или просто на сервере статического контента значительно поможет, поскольку веб-серверу, обрабатывающему Magento, вообще не придется обрабатывать эти запросы. Вы знаете, базовые вещи для запуска приложения.

Вы также можете указать Magento сохранять сеансы в Memcache, чтобы ваши сеансы находились в памяти и распространялись. Как только вы измените Magento, чтобы избавиться от всех этих «неприятных» запросов, все остальное действительно будет таким же, как и на любом веб-сайте. Существует МНОЖЕСТВО инструментов, которые помогут вам «масштабировать» вашу систему. Просто помните, что у нас было МНОГО продуктов, и мы готовились к выпуску около 1 000 000 продуктов. Так что, если вы продаете около 40 000 продуктов, вам, вероятно, не придется прилагать столько усилий.

person William    schedule 30.06.2010
comment
Примечание. У нас снова было более 400 тысяч товаров и куча атрибутов. Мы также работали на прилично маленькой машине, учитывая тот факт, что Magento не был создан для скорости. Поэтому, если у вас есть меньший набор данных, это, вероятно, будет НАМНОГО проще, хотя я действительно думаю, что преимущества перехода на что-то вроде Solr потрясающие. - person William; 30.06.2010
comment
Если возможно, предоставьте ссылку на свой веб-сайт Magento, которая поможет другим (включая меня) ознакомиться с возможностями Solr с Magento. Спасибо, Уильям, за такое замечательное объяснение. - person Knowledge Craving; 30.06.2010
comment
Выдать название/ссылку на приложение не могу по юридическим причинам. Хотя я был бы готов ответить на некоторые ваши вопросы, чтобы помочь вам. Вы можете увидеть пример фасетов здесь — lucidimagination .com/Community/Hear-from-the-Experts/Articles/ — Solr работает очень быстро, и ответ на этот вопрос можно найти в Интернете. Поскольку я почти полностью удалил все запросы к Magento для сбора данных и перешел прямо к Solr, это, очевидно, оказывает огромное влияние на производительность. - person William; 30.06.2010
comment
Я обновил свой ответ, чтобы рассказать о еще нескольких вещах, которые вы можете сделать, чтобы ускорить его. - person William; 30.06.2010
comment
Не могли бы вы предоставить некоторые подробности о том, как вы удалили все прямые / косвенные запросы Magento, чтобы вместо них можно было разместить Solr? Пожалуйста, помогите мне в этом. - person Knowledge Craving; 05.12.2010