Jump to content

Медленная работа сайта при большом количестве товаров в корзине


Recommended Posts

Заметил, что если в корзине к примеру 100 товаров, то заметно тормозит весь сайт, а если еще и есть купоны, то тормоза совершенно не выносимы.

 

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

 

Спрашивается, как оптимизировать работу корзины?

Link to comment
Share on other sites

Заметил, что если в корзине к примеру 100 товаров, то заметно тормозит весь сайт, а если еще и есть купоны, то тормоза совершенно не выносимы.

 

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

 

Спрашивается, как оптимизировать работу корзины?

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

Link to comment
Share on other sites

Так вот же и логично было бы не вызывать при каждом обращении к сайту весь функционал корзину, а только показывать в модуле blockuserinfo только количество товара в корзине. А вот доступность и остальные прелести показывать только когда уже клиент перешел к формированию заказа, нажав на корзину. У меня к примеру корзина имеет хук с displayHeader и displayTop,

может что то лишнее?

Link to comment
Share on other sites

Не чего лишнего здесь нет. Возможно Вам поможет такой модуль как Cache manager для prestashop.

 

А еще в новой версии 1.6.10 есть встроенная возможность кешировать Mysql запросы к БД.

Link to comment
Share on other sites

Да уж, цена у него ....

А архитектурных решений нету?

Ну зачем каждый раз пересчитывать кучу не нужных на данный момент параметров, 

неужели все так и мучаются при достаточно большом кол-ве товаров в корзине?

Link to comment
Share on other sites

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

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

Так вот, там добра на 600 000 строк. Залили их в ps_state (назовем ее городами), прицепили их все к country = 7 (Россия).

И сайт упал. Начали разбираться. Как открыли код, так ужаснулись. И у нас возникла редкостная ненависть к разработчикам.

Что они сделали. В моделях они создают массив из всех state к country. В результате мы получаем allowed memory size.

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

И это 1% из всех тех прелестей с которыми мы столкнулись при разработке магазина на престашопе. 

Но выбора у нас не было, нужно на престе делать. В общем мы перепилили все фронт контроллеры престы. Модели тоже почти все перепилили, но в некоторых местах все еще используются престовские.

Выкинули шаблонизатор смарти, все шаблоны у нас в php  и рендерятся из фронт контроллера.

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

 

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

 

Подведу итог, разработчики постарались максимально охватить рынок, показав какая преста классная, красивая, с графиками, с кучей возможностей, мультиязычность, мультимагазинность, скидки, купоны, наборы, мультикарточки, характеристики и тд. Но все это дело, жутко тормозит. И не годится для нормальных коммерческих проектов. А что бы все это у нас завелось, на коммерческом проекте, с 30 тыс продуктами, мы переписали 90% фронт офиса.

Link to comment
Share on other sites

пашет ненапрягаясь на самом дешевом хостинге на nginx, с отключенным кешированием при 14000 товарах, цены ежедневно, а-то и два раза в день обновляются софтом через api.

 

возможно вы просто не умеете оптимизировать сервера?

Link to comment
Share on other sites

Как вы решили, что он у вас пашет не напрягаясь. По тому, что вы нажали на страницу, и она тут же открылась ? =)

С отключенным кешированием чего ? Кешированием шаблонизатора смарти ? Кешированием системой кеширования престы? Кешированием sql сервера ? Есть много систем кеширования, о какой конкретно вы говорите ?

Причем тут nginx ? Мы не о нем говорим, он тут совершенно не причем. Впрочем как и ваше api, которое обновляет цены.

 

Тут суть в подходе разработки. Некоторые вещи, совсем не ориентированы на высокую нагрузку или большую базу.

 

Не буду с вами спорить, возможно мы действительно не умеем настраивать сервера под систему престашоп. На сайте престашопа мы не видели никаких рекомендаций по настройке.

Некоторые вещи в моделях престашопа даже под кеширование даже не  попадают и при генерации и заставляют апатч жрать процессор с огромной силой. Я имею ввиду переборку огромных массивов и их хранение в памяти.

Link to comment
Share on other sites

Так вот добавьте в корзину 100 товаров и пару купонов (можно и без них), и походите по сайту замеряя скорость, это все у меня на версии 1.5.3.1 правда

Link to comment
Share on other sites

Как вы решили, что он у вас пашет не напрягаясь. По тому, что вы нажали на страницу, и она тут же открылась ? =)

С отключенным кешированием чего ? Кешированием шаблонизатора смарти ? Кешированием системой кеширования престы? Кешированием sql сервера ? Есть много систем кеширования, о какой конкретно вы говорите ?

Причем тут nginx ? Мы не о нем говорим, он тут совершенно не причем. Впрочем как и ваше api, которое обновляет цены.

 

Тут суть в подходе разработки. Некоторые вещи, совсем не ориентированы на высокую нагрузку или большую базу.

 

Не буду с вами спорить, возможно мы действительно не умеем настраивать сервера под систему престашоп. На сайте престашопа мы не видели никаких рекомендаций по настройке.

Некоторые вещи в моделях престашопа даже под кеширование даже не  попадают и при генерации и заставляют апатч жрать процессор с огромной силой. Я имею ввиду переборку огромных массивов и их хранение в памяти.

не напрягаясь конечно же можно взять в ковычки, но исходя из статистики панели cpanel - не более 40% ресурсов.

кеширование системы отключено, также как и сжатие шаблонизатора.

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

 

я не хочу разводит  холиваров о херовости движка, меня он тоже многим не устраивает, но и для бесплатного полнофункционального движка у него есть все.

Edited by rewuxiin (see edit history)
Link to comment
Share on other sites

Так вот добавьте в корзину 100 товаров и пару купонов (можно и без них), и походите по сайту замеряя скорость, это все у меня на версии 1.5.3.1 правда

 

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

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

Edited by rewuxiin (see edit history)
Link to comment
Share on other sites

Просто эта CMS не подходит под очень большое количество товаров с очень большим количеством комбинаций, есть разные CMS у которых есть свои плюсы и минусы. А если все же выбрали престу то нужно допиливать тогда, включая покупку дорогих модулей. Вообще у кого куча товаров с кучей комбинаций, тому эти 300-800 баксов ради бизнеса не тяжело потратить. Проблемы такие как у Вас начинаются в основном у фрилансера не оценившего объём работ и запросив определенный бюджет в который дополнительные модули за 300-800 баксов не входили)

  • Like 2
Link to comment
Share on other sites

×
×
  • Create New...