Оптимизация сайтов, использующих Magento - PullRequest
1 голос
/ 30 июня 2010

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

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

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

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

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

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

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

1 Ответ

4 голосов
/ 30 июня 2010

Не так давно я запустил магазин Magento с более чем 400 тысячами товаров, более 7 000 категорий, более 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 продуктов, вам, вероятно, не придётся столько хлопот.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...