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

Всем привет!

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

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

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

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

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

Fi1osof
08 сентября 2015, 18:50
0
Рекламы коммент: если не 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
    0
    Николай, спасибо за подробный ответ. Я не работал с ShopModxBox, — расскажите пожалуйста, товары там хранятся в отдельной таблице, или все реализовано аналогично с ShopKeeper`ом — обычными документами? Думаю, что с обычными документами при десятках тысяч будет тормозить при сохранении, банально из-за очистки кэша. Впрочем, это лишь мои домыслы.
      Fi1osof
      08 сентября 2015, 20:58
      0
      Товары документами хранятся не только в шопкипере, но и в минишопе. Это нормальная практика. Но да, с кешем тут конечно потребуются дополнительные телодвижения.
      Во-первых, кеш-провайдер переводится на memCached или типа того. Как раз для быстрого сброса кеша. По опыту скажу, что даже на сотне тысяч документов кеш будет сбрасываться мгновенно.
      Во-вторых, дело не только в объеме и сбросе кеша, а в самой генерации кеша. Ведь MODX проходится по всем документам, чтобы набить их в кеш. Хотите больше информации по кешированию — крайне советую к прочтению modxclub.ru/blog/139.html
      Для борьбы с этим мы используем описанный в статье cacheOptimizer. Правда после обновления самого MODX-а его так же придется переустанавливать, но это не долго. Может руки доберутся и я все-таки отправлю пуллреквест в ядро MODX, хотя сомневаюсь, что его примут. Но без этого крупные проекты на MODX просто не запустить.
        Павел Ширяев
        09 сентября 2015, 00:40
        0
        Спасибо за cacheOptimizer, интересно. Надо попробовать. Еще попутно наткнулся на cacheMaster, тоже стоящее внимания (по описанию) решение, позволяет очищать кэш только редактируемого документа.
    Евгений Webinmd
    08 сентября 2015, 22:42
    0
    В шопкипере есть возможность хранить товары в отдельной таблице.
    В минишопе тоже как бы товары хранятся отдельно.
      Fi1osof
      08 сентября 2015, 22:58
      0
      Вы говорите о товарах или о данных товаров? И в минишопе, на сколько я знаю, товары не хранятся как бы отдельно. Есть товар (CRC, расширяющий modResource класс github.com/bezumkin/miniShop2/blob/master/core/components/minishop2/model/minishop2/msproduct.class.php#L7), а есть отдельно класс данных товаров msProductData. То же самое и в ShopModxBox.

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

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

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

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

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

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

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



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

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

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

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