К содержанию

MS2, mSearch2 и 25 000 товаров

Всем привет!

Есть задача разработать книжный каталог со стартовой численностью 25 000+ наименований. Вопрос: потянет ли MS2 такое количество товаров? Не будет ли тормозить? Сможет ли mSearch2 быстро фильтровать категории, в которых содержится по несколько тысяч наименований?

И второй вопрос. Есть ли где-то успешные реализации электронных товаров на ms2 (программы, документы и пр). И если есть — поделитесь, пожалуйста, ссылками.

Стоит выбор платформы для реализации, и появилась дилемма: сделать все на родном и любимом MODX, либо искать другую платформу.

Всем спасибо за ответы.
Павел Ширяев
Павел Ширяев
08 сентября 2015, 13:11
modx.pro
3 809
Реклама

Комментарии: 24

Fi1osof
Fi1osof Эксперт
08 сентября 2015, 18:50
Рекламы коммент: если не MS2, то обязательно уже и не MODX? Есть ShopModxBox. Вот, для примера, магазин на 140 000 товаров. Дизайн конечно стремненький (не наш), но по скорости работы он совсем не плох.
Хотел было показать еще www.dg-yug.ru (там 75 000 статей, и как раз там я делал семантический поиск, котторый войдет в ближайший скорый релиз ShopModxBox), да только теперь он тормозить жутко стал. Судя по всему я могу сейчас кинуть тень сомнения, но переделали его как раз на office, mfilter, hybridAuth и т.п. До того, как сайт испортили, поиск выполнялся 1-2 сек по всем статьям (там порядка 10 500 000 индекс-записей). Чуть позже я разверну копию сайта, чтобы подтвердить свои слова. Сейчас поиск выполняется более 10 секунд. К слову о поиске: искать, например, «Пропала собака в Сочи». Сейчас он находит 1000+ страниц результатов. В первой же статье есть Сочи, но нет и близко собака и пропала (пропажа и т.п.).
Вообще про историю с этим сайтом я напишу чуть позже. Это яркий пример того, как бывает, когда клиент хочет съэкономить, думая, что можно сменить подрядчика на подешевле, когда все уже готово. Забывают, что готовое сломать не долго. А ведь раньше сайт открывался менее чем за 0.1 сек. Он и сейчас примерно за столько же открывается, да только это из кеша. На горячую 3+ сек открывается. Это при том, что еще и комментарии убрали (а у нас они были не кешируемыми).
В общем, дело не только в выбранном инструменте, но и кто работает с ним.
    Павел Ширяев
    Павел Ширяев Проверенный
    08 сентября 2015, 20:50
    Николай, спасибо за подробный ответ. Я не работал с ShopModxBox, — расскажите пожалуйста, товары там хранятся в отдельной таблице, или все реализовано аналогично с ShopKeeper`ом — обычными документами? Думаю, что с обычными документами при десятках тысяч будет тормозить при сохранении, банально из-за очистки кэша. Впрочем, это лишь мои домыслы.
      Fi1osof
      Fi1osof Эксперт
      08 сентября 2015, 20:58
      Товары документами хранятся не только в шопкипере, но и в минишопе. Это нормальная практика. Но да, с кешем тут конечно потребуются дополнительные телодвижения.
      Во-первых, кеш-провайдер переводится на memCached или типа того. Как раз для быстрого сброса кеша. По опыту скажу, что даже на сотне тысяч документов кеш будет сбрасываться мгновенно.
      Во-вторых, дело не только в объеме и сбросе кеша, а в самой генерации кеша. Ведь MODX проходится по всем документам, чтобы набить их в кеш. Хотите больше информации по кешированию — крайне советую к прочтению modxclub.ru/blog/139.html
      Для борьбы с этим мы используем описанный в статье cacheOptimizer. Правда после обновления самого MODX-а его так же придется переустанавливать, но это не долго. Может руки доберутся и я все-таки отправлю пуллреквест в ядро MODX, хотя сомневаюсь, что его примут. Но без этого крупные проекты на MODX просто не запустить.
        Павел Ширяев
        Павел Ширяев Проверенный
        09 сентября 2015, 00:40
        Спасибо за cacheOptimizer, интересно. Надо попробовать. Еще попутно наткнулся на cacheMaster, тоже стоящее внимания (по описанию) решение, позволяет очищать кэш только редактируемого документа.
    Евгений Webinmd
    Евгений Webinmd Эксперт
    08 сентября 2015, 22:42
    В шопкипере есть возможность хранить товары в отдельной таблице.
    В минишопе тоже как бы товары хранятся отдельно.
      Fi1osof
      Fi1osof Эксперт
      08 сентября 2015, 22:58
      Вы говорите о товарах или о данных товаров? И в минишопе, на сколько я знаю, товары не хранятся как бы отдельно. Есть товар (CRC, расширяющий modResource класс github.com/bezumkin/miniShop2/blob/master/core/components/minishop2/model/minishop2/msproduct.class.php#L7), а есть отдельно класс данных товаров msProductData. То же самое и в ShopModxBox.

      А вот про хранение товаров в отдельной таблице шопкипера никогда не слышал. Только что в отдельном контексте хранится. Но может что новое и появилось. Или там так же отдельно только параметры документов, и вы это тоже называете отдельным хранением товаров?
        Евгений Webinmd
        Евгений Webinmd Эксперт
        08 сентября 2015, 23:02
        В шопкипере через MIGX создаешь отдельную табличку с своими полями и там уже хранишь товары. Так было раньше, сейчас им не пользовался давно, может что интересное и появилось.
          Fi1osof
          Fi1osof Эксперт
          08 сентября 2015, 23:04
          А ЧПУ на базе самого MODX, проверку прав и т.п. — все фтопку. Да? Ну ОК. По этим причинам мы не делаем самих товаров не в документах. Но достаточно прокачали оптимизацию, чтобы потянуть сотни тысяч товаров. Хотя бы вот этот топик прочитайте habrahabr.ru/post/253737/
            Евгений Webinmd
            Евгений Webinmd Эксперт
            08 сентября 2015, 23:11
            Я не агитирую за какой-то из компонентов, просто сказал что есть возможность хранить отдельно, а с ЧПУ там есть решения и всё такое, можно в документацию глянуть(кому надо). Что там внутри я не в курсе, я верстальщик, приходилось пару раз натягивать макеты без собственно разработчика, поэтому говорю то, что узнал из документации.
            Вашим решением тоже не приходилось пользоваться, верстальщику с ним тяжко.

            А автору могу посоветовать только поставить разные компоненты и забить их данными (не руками конечно), тогда и будет ясно что справляется, а что нет.
              Павел Ширяев
              Павел Ширяев Проверенный
              09 сентября 2015, 00:38
              Можно попробовать нагенерировать скриптом фейковых товаров пару-тройку десятков тысяч. Спасибо за наводку, интересная мысль…
                Fi1osof
                Fi1osof Эксперт
                09 сентября 2015, 15:58
                Да я тоже не на агитации сосредоточен, а на деталях и правильным именованием вещей. Хранить дополнительные параметры товаров, когда сами товары являются документами — это не есть «хранить товары в отдельной таблице. Это есть „хранить данные товаров в отдельной таблице“.

                Вашим решением тоже не приходилось пользоваться, верстальщику с ним тяжко.
                Верстальщику с ним не сложно, если он там верстает, а не программирует. Потому что что сложного верстать код в Смарти, тем более имея исходные данные в массивах? О плюсах использования сторонних шаблонизаторов на замену нативному MODX-ому довольно много написано здесь.
                А вот если вы пытаетесь программировать, а не просто компоновать готовые модули, то тут да, верстальщику это сложно. И об этом сразу говорилось, что ShopModxBox имеет довольно высокий порог вхождения. Но в топике ничего не говорилось про пороги вхождения, в топике спрашивалось про возможности создания магазина на 25 000 товаров на MODX. ShopModxBox это может легко, даже без установки cacheOptimizer.
                Евгений Webinmd
                Евгений Webinmd Эксперт
                08 сентября 2015, 23:25
                За сcылку спасибо, интересная статья
                  Fi1osof
                  Fi1osof Эксперт
                  09 сентября 2015, 15:50
                  Всегда пожалуйста!
          Николай
          Николай Проверенный
          09 сентября 2015, 19:13
          Делал ИМ на шопкипере, безо всяких ухищрений с отдельными таблицами, т.е. всё на ресурсах. И параметры товаров в обычных ТВ. mFilter и mSearch вполне сносно работают с 13 тыс. товарами. У каждого товара имеется 7 твшек. А в MS параметры вообще в отдельной таблице лежат, думаю 25 тыс. товаров вообще не проблема.
            Fi1osof
            Fi1osof Эксперт
            09 сентября 2015, 19:19
            А можно ссылку на такой магазин на шопкипере? А то я за два дня получил уже два запроса на оптимизацию магазинов на нем. Один три секунды открывается (там меньше сотни товаров), а другой порядка 20 секунд. Понимаю, что от разработчика тоже многое зависит, вот может вы тот, кто смог на нем большой магазин сделать?
              Павел Ширяев
              Павел Ширяев Проверенный
              09 сентября 2015, 19:42
              Бывают еще разные говнохостинги, вроде nic.ru, у которых бд переваривает запросы со скоростью калькулятора «Электроника-М». Достаточно просто перенести на любой нормальный хостинг, и все замчит со скоростью ветра.

              У меня есть магаз на MS2+mSearch2+Office и еще там кое-чего разного понаставлено, все это крутится на дешевом виртуальном хостинге (у не самого быстрого Мастерхоста) и работает хорошо. Но и товаров там сотни три или чуть больше, так что это сложно считать показателем.
                Fi1osof
                Fi1osof Эксперт
                09 сентября 2015, 19:49
                Я довольно часто переделываю сайты и имею не малый опыт в этом. Когда сайт открывается несколько секунд, даже при смене хостинга на офигенный вы вряд ли получите прирост более чем в три раза. Но плюс к этому вы еще и получите весьма заметную нагрузку на сервер. Просто посмотрите картинки здесь: modxclub.ru/blog/131.html
                Поэтому, даже если вы перенесли на офигенный хостинг, то проведя нормальную работу с сайтом можно увидеть серьезную разницу в нагрузке на сервер, особенно если есть средства измерить ее.
                А вот такие общие фразы «я делал, было много всего, у меня все летало как ветер...» без пруфов — как бы мало имеет ценности.
                  Роман Садоян
                  Роман Садоян Проверенный
                  09 сентября 2015, 20:05
                  Согласен что nic.ru — не айс вообще.
                  Николай
                  Николай Проверенный
                  10 сентября 2015, 00:10
                  А можно ссылку на такой магазин на шопкипере?
                  Магазин пока в разработке (на завершающем этапе), и я не хотел бы его выносить на суд общественности :) 20 секунд это совсем жестоко… Показатели открытия категории товаров с карточками сейчас такие, если обновить кеш:

                  Время на запросы к БД 0.4206 s
                  Запросов к БД 473
                  Время работы PHP скриптов 3.3148 s
                  Время генерации страницы 3.7355 s

                  Фильтрация работает в пределах секунды. И shopkeeper тут вообще не причём, т.к. это всего лишь корзина и не более. Хранение товаров производится штатными средствами modx, а вывод с помощью сниппетов pdoTools. Никаких особых средств или чего-то нестандартного я не использовал, сам не ожидал, что так получится, думал будет медленнее. Правда под нагрузкой как будет работать пока знаю.
                    Fi1osof
                    Fi1osof Эксперт
                    10 сентября 2015, 01:53
                    Ну, как я и говорил, на 13к и не требуется с кешем никакой допработ, достаточно просто отключить кеширование алиасов в настройках (хотя и рекомендуется перевести на memcached или типа того).

                    473 запроса — это очень много. 3.7 секунд — тоже много. Я ни в чем не обвиняю, просто говорю, что надо стараться не допускать таких показателей :)
                Ivan Shvindin
                Ivan Shvindin Проверенный
                09 сентября 2015, 21:41
                100к товаров и посещалка 1к в день, minishop2, msearch2, полёт нормальный, но есть что оптимизировать при необходимости



                Также могу порекомендовать Django, на проекте с 1500к товаров страницы генерируются за ~50мс
                  Fi1osof
                  Fi1osof Эксперт
                  09 сентября 2015, 22:13
                  Ссылку на сайт можно? Так-то это просто картинка от рандомного сайта.
                  Также могу порекомендовать Django, на проекте с 1500к товаров страницы генерируются за ~50мс
                  Генерятся, или из кеша отдаются?

                  P.S. 1к в день — посещалка ни о чем, если говорить о нагрузке. Вопрос сколько онлайн юзеров выдерживает? Мы на dg-yug.ru тестировали 2000 юзеров онлайн, сервер положить не смогли. Отчет: joxi.ru/Dr8Ke8OIYgKlA6
                  Но это было до того, как его испортили обновили. Сейчас скорее всего и сотню не выдержит.
                    Павел Ширяев
                    Павел Ширяев Проверенный
                    09 сентября 2015, 22:54
                    Спасибо за информацию!

                    Подскажите спецификации сервера, на котором все это крутится (если не секрет).

                    Django — он же на питоне и для питона? Это пока не вариант, мне бы с MODX/PHP разобраться :)
                      Fi1osof
                      Fi1osof Эксперт
                      09 сентября 2015, 22:58
                      Кстати, еще вопросик: у вас там 100к товаров. С объемом кеша как-то боролись? КЕш-провайдер стандартный файловый или как? И если файловый, то сколько он по объему в мегабайтах?
                      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
                      24