jumbo_jazz Posted December 17, 2014 Share Posted December 17, 2014 Заметил, что если в корзине к примеру 100 товаров, то заметно тормозит весь сайт, а если еще и есть купоны, то тормоза совершенно не выносимы. Исследования показали, что это все происходит из за того, что модуль корзины работает всегда, при обращении к любой странице, при этом он каждый раз пересчитывает доступность каждого товара на складе, вызывая getProductRealQuantities столько раз, сколько товаров в корзине, ну и другие параметры. Хотя знать это нужно лишь в момент оформления заказа. Спрашивается, как оптимизировать работу корзины? Link to comment Share on other sites More sharing options...
absent Posted December 18, 2014 Share Posted December 18, 2014 Заметил, что если в корзине к примеру 100 товаров, то заметно тормозит весь сайт, а если еще и есть купоны, то тормоза совершенно не выносимы. Исследования показали, что это все происходит из за того, что модуль корзины работает всегда, при обращении к любой странице, при этом он каждый раз пересчитывает доступность каждого товара на складе, вызывая getProductRealQuantities столько раз, сколько товаров в корзине, ну и другие параметры. Хотя знать это нужно лишь в момент оформления заказа. Спрашивается, как оптимизировать работу корзины? если в корзине есть товар то при каждой загрузке опрашиваются моды доставки. Link to comment Share on other sites More sharing options...
jumbo_jazz Posted December 18, 2014 Author Share Posted December 18, 2014 Так вот же и логично было бы не вызывать при каждом обращении к сайту весь функционал корзину, а только показывать в модуле blockuserinfo только количество товара в корзине. А вот доступность и остальные прелести показывать только когда уже клиент перешел к формированию заказа, нажав на корзину. У меня к примеру корзина имеет хук с displayHeader и displayTop, может что то лишнее? Link to comment Share on other sites More sharing options...
Kerm Posted December 18, 2014 Share Posted December 18, 2014 Не чего лишнего здесь нет. Возможно Вам поможет такой модуль как Cache manager для prestashop. А еще в новой версии 1.6.10 есть встроенная возможность кешировать Mysql запросы к БД. Link to comment Share on other sites More sharing options...
jumbo_jazz Posted December 18, 2014 Author Share Posted December 18, 2014 Да уж, цена у него .... А архитектурных решений нету? Ну зачем каждый раз пересчитывать кучу не нужных на данный момент параметров, неужели все так и мучаются при достаточно большом кол-ве товаров в корзине? Link to comment Share on other sites More sharing options...
Kerm Posted December 19, 2014 Share Posted December 19, 2014 Можно все, но за бабло. Link to comment Share on other sites More sharing options...
NitroGenerate Posted December 19, 2014 Share Posted December 19, 2014 Не могу сдержаться и не высказаться как мы решили добавить кладер городов в престу. Для тех, кто не знает, кладер городов - это база всех городов, областей, населенных пунктов, деревень, сел, поселков, хуторов и тд.. Так вот, там добра на 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 More sharing options...
rewuxiin Posted December 19, 2014 Share Posted December 19, 2014 пашет ненапрягаясь на самом дешевом хостинге на nginx, с отключенным кешированием при 14000 товарах, цены ежедневно, а-то и два раза в день обновляются софтом через api. возможно вы просто не умеете оптимизировать сервера? Link to comment Share on other sites More sharing options...
NitroGenerate Posted December 19, 2014 Share Posted December 19, 2014 Как вы решили, что он у вас пашет не напрягаясь. По тому, что вы нажали на страницу, и она тут же открылась ? =) С отключенным кешированием чего ? Кешированием шаблонизатора смарти ? Кешированием системой кеширования престы? Кешированием sql сервера ? Есть много систем кеширования, о какой конкретно вы говорите ? Причем тут nginx ? Мы не о нем говорим, он тут совершенно не причем. Впрочем как и ваше api, которое обновляет цены. Тут суть в подходе разработки. Некоторые вещи, совсем не ориентированы на высокую нагрузку или большую базу. Не буду с вами спорить, возможно мы действительно не умеем настраивать сервера под систему престашоп. На сайте престашопа мы не видели никаких рекомендаций по настройке. Некоторые вещи в моделях престашопа даже под кеширование даже не попадают и при генерации и заставляют апатч жрать процессор с огромной силой. Я имею ввиду переборку огромных массивов и их хранение в памяти. Link to comment Share on other sites More sharing options...
jumbo_jazz Posted December 19, 2014 Author Share Posted December 19, 2014 Так вот добавьте в корзину 100 товаров и пару купонов (можно и без них), и походите по сайту замеряя скорость, это все у меня на версии 1.5.3.1 правда Link to comment Share on other sites More sharing options...
rewuxiin Posted December 19, 2014 Share Posted December 19, 2014 (edited) Как вы решили, что он у вас пашет не напрягаясь. По тому, что вы нажали на страницу, и она тут же открылась ? =) С отключенным кешированием чего ? Кешированием шаблонизатора смарти ? Кешированием системой кеширования престы? Кешированием sql сервера ? Есть много систем кеширования, о какой конкретно вы говорите ? Причем тут nginx ? Мы не о нем говорим, он тут совершенно не причем. Впрочем как и ваше api, которое обновляет цены. Тут суть в подходе разработки. Некоторые вещи, совсем не ориентированы на высокую нагрузку или большую базу. Не буду с вами спорить, возможно мы действительно не умеем настраивать сервера под систему престашоп. На сайте престашопа мы не видели никаких рекомендаций по настройке. Некоторые вещи в моделях престашопа даже под кеширование даже не попадают и при генерации и заставляют апатч жрать процессор с огромной силой. Я имею ввиду переборку огромных массивов и их хранение в памяти. не напрягаясь конечно же можно взять в ковычки, но исходя из статистики панели cpanel - не более 40% ресурсов. кеширование системы отключено, также как и сжатие шаблонизатора. по поводу nginx, пробовал без него, движок на хостинге действительно сильно хромает. я не хочу разводит холиваров о херовости движка, меня он тоже многим не устраивает, но и для бесплатного полнофункционального движка у него есть все. Edited December 19, 2014 by rewuxiin (see edit history) Link to comment Share on other sites More sharing options...
rewuxiin Posted December 19, 2014 Share Posted December 19, 2014 (edited) Так вот добавьте в корзину 100 товаров и пару купонов (можно и без них), и походите по сайту замеряя скорость, это все у меня на версии 1.5.3.1 правда вообще проблема существует, но проблема больше в том, что движок магазина должен охватывать большое количество потребностей пользователей, кому-то нужны одни функции кому-то нет, так что не хватает гибкости настроек через которые нужно бы было что-то включить, что-то отключить. разработчики оставили для себя или для нас место для заработка в виде обработки напильником, что, на самом деле, наблюдается во всех условно бесплатных движках магазинов, которыми я занимался. Edited December 19, 2014 by rewuxiin (see edit history) Link to comment Share on other sites More sharing options...
Kerm Posted December 24, 2014 Share Posted December 24, 2014 Просто эта CMS не подходит под очень большое количество товаров с очень большим количеством комбинаций, есть разные CMS у которых есть свои плюсы и минусы. А если все же выбрали престу то нужно допиливать тогда, включая покупку дорогих модулей. Вообще у кого куча товаров с кучей комбинаций, тому эти 300-800 баксов ради бизнеса не тяжело потратить. Проблемы такие как у Вас начинаются в основном у фрилансера не оценившего объём работ и запросив определенный бюджет в который дополнительные модули за 300-800 баксов не входили) 2 Link to comment Share on other sites More sharing options...
Recommended Posts