Pull to refresh

Comments 24

И хотя WP прекрасная вещь для быстрого старта некоего прототипа, когда вообще не понятно, взлетит или не взлетит, говорить о том что он прекрасно переварит 500к товаров скорее ошибочно. Все дело в структуре базы, если вы хотите показать 100 полноценных товаров (с заполненными характеристиками), это будет примерно 30 SQL запросов на каждый товар. Да, они будут простыми, LIMIT 1, но 30 х 100 это весьма много, для одной страницы. Да, можно кешировать и продолжать верить в чудо, но чуда с такой структурой БД не будет.
Еще раз напишу. Прекрасно для старта, но если проект взлетает, от WP надо избавляться как можно быстрее.

Базы для спама и интернет магазины на wp это форма мышления.

это бизнес, а не форма. У нас штат компании всего около 17 человек, большая часть программистов, но они слишком дорогие чтобы делать сайты простые, которые можно сделать за 260$
бизнес не оправдание деятельности. Он может быть созидательный или деструктивный. Из за последнего ваш пост в минусе
Мне кажется, что даже 100-200 товаров для очень многих магазинов — это достаточно и больше не нужно. А 500к товаров — это избранные единицы магазинов.
Помню на хабре статья была про человека, который шаманские программистские бубны продавал. Ну сколько у него там моделей бубнов было? И ничего взлетел проект еще как!
На самом деле для проблем будет достаточно 200 разношерстных товаров, с разными аттрибутами, категориями, вариантами (цвета\размеры), наличие и прочие стандартные вещи. Каждая характеристика, помимо post_title, post_content — это два SQL запроса в БД (получить название поля и содержимое поле). Если мы говорим о вложенных параметрах (например динамичный список), то там вообще можно сразу переписывать начинать :)
Да, 500к товаров это очень много. Но ведь многие продают с чужих складов — там легко импортировать такое количество.

Ну в реальности, все запросы агрегируются, а уже после происходит запрос, и если даже нужно 10 раз подучить post_title и 50 post_conten то это один запрос, а не как вы там написали выше. Нет я конечно понимаю что у вас наверняка найдётся аргумент типо «нет» но в реальности работает так как я выше описал, сам проверял. Да и к тому же вы не поверите как много и не как быстро современный MySQL может выполнять запросы, даже неоптимальные.

Все дополнительные параметры хранятся в wp_postmeta, в виде ключ: значение. У каждого товара есть некое свойство, например price.
каждое свойство на самом деле это две записи в таблице wp_postmeta:
1. post_id, 'price', 'field123'
2. post_id, 'field123', 500
Из за того, что для выполнения запроса №2, вам требуется значения из запроса №1, вы не можете полноценно аггрегировать. Почти всегда эти свойства еще и вызывают из шаблона, что мешает заранее все аггрегировать :)
Но полностью согласен с пунктом про post_title/post_content, эта информация хранится в таблице wp_posts, с ней можно адекватно работать. Увы, это всего два поля, в магазинах используют сотни аттрибутов, а вот они как раз в мета полях. Со скоростью работы mysql тоже соглашусь. Тем не менее, моя рекомендация, не заигрываться с интернет магазинами на WP. Как только появилась нагрузка, прокачать VPS и думать об альтернативах.
Может, меня заминусуют, но я реально не понимаю, зачем использовать вп для магазинов, если для них уже есть готовые движки, которые и задумывались для того, чтобы на них создавали интернет-магазины. Например, CS-cart — мне очень нравится этот движок, но он платный. Но всё же, при наличии финансов его можно брать. Из бесплатных — Opencart («классика» в своём роде). Ну или вообще битрикс (тоже платный, тоже популярный, но я с ним не работал, и ничего конкретно про него сказать не могу). Почему именно Вордпресс — я не знаю. Кто работает с движками — расскажите мне пожалуйста, в чём его преимущества как движка для интернет-магазина.

Потому что, работает на самом дешевом хостинге, при этом это не платформа, а твой личный сайтик и ко всему установить wocommerce не сложнее чем скажем браузер в windows далее, далее, далее -готово. Только поэтому наверное.

Ну, из того кейса что в статье вроде описывается из метаданных скорее всего будет только цена использоваться, с этим можно жить. Нет ну если конечно завести каждый параметр товара отдельным полем то конечно это будет тяжеловато наверное. Но обычно это не так, тайтл, контент, цена и картинка. Такие магазины вполне нормально хоть на чем делать. А вот что не нормально так это то что woocommerce php сессии использует, и если WordPress можно эффективно кешировать то с этим человеком замечательным плагином уже нельзя. Вот это проблема да. Но это не про количество записей или метаданных, все гораздо печальней, плохо будет при большой посещалке не зависимо от наличия товаров. Остаётся утешать себя тем что посещаемый интернет магазин, быстро сделает его хозяина богатым, а там пусть хоть огнём горит :-D В целом согласен на woo лучше магазин не делать, а есть ли альтернативы чтоб из коробки работали и совсем не стоили денег не знаю, возможно и нет.

Сессии можно хоть на рамдиск, хоть в memcached складывать — оба варианта данное узкое место убирают. Я таким способом «оживлял» магазины с несколькими десятками тысяч товаров и посещаемостью 10-20 тыс. клиентов в сутки. Более крупным и/или нагруженным магазинам это не особо помогает и нужно кропотливо перелопачивать весь код, избавляться от сторонних плагинов, переходить на более производительное железо и заниматься грамотной регулировкой софта. Ничего невозможного нет, хотя по трудозатратам, пожалуй, сравнимо с созданием проекта с нуля, ибо от WP мало что останется.
Что плохо и о чём следует знать всем, кто хочет себе сайт на WP — общее низкое качество плагинов и шаблонов. WordPress предлагает много полезных возможностей из коробки, позволяющей сделать, в принципе, шустро работающий проект (если не хотеть опять-таки сотни тысяч постов и товаров), но разработчики вечно придумывают крайне неэффективные костыли и в целом не заботятся о том, насколько их решение жизнеспособно.
Например, команда разработки WooCommerce, судя по изменениям в коде, относительно недавно стала задействовать PHP CodeSniffer для обнаружения проблемных мест. До этого приходилось перелопачивать каталог /templates/, экранируя везде вывод переменных, а с 3.4.x (год назад) начались подвижки в лучшую сторону.
На основе того, как авторы плагинов фильтрации-рубрикации (такие обязательно ставят себе владельцы интернет-магазинов) реализуют банальное перечисление рубрик, можно писать сборники «Вредных советов»: от каких-то непостижимых манипуляций с url и именами категорий для вычисления id и соответственно вывода названий до некешируемых прямых запросов к БД. Естественно, с такими утяжелителями магазины с жалкой сотней товаров начинают тормозить.
Ещё есть прослойка плагинов, чьи авторы догадываются, что стандартные таблицы wp_post, wp_postmeta и другие *meta не совсем однозначно не подходящее место для хранения сотен тысяч записей и создают отдельные таблицы, но забывают не то что об индексировании, но даже о важности уникальных ключей (горячий привет разрабам платного AdsPlace’r Pro, чьё творение несовместимо с PHP 7.2 и тормозит отдачу страниц на сотни мс из-за прямого перебора базы GeoIP).
Бывают и более дикие решения. В одном кастомном шаблоне, разработанном для городского новостного сайта, за который явно отдали немаленькие деньги, свойства погоды (влажность, давление, уровень воды и т.п.) записывались в ячейки отдельных таблиц прямыми SQL-запросами и прочитывались оттуда же в том же .php файле! При этом обновление погоды происходило не через планировщик WP, а неэкранированные POST-запросы, передающие текущую дату вместе с массивом ненужных данных, и сравнение с той, чтобы была в ячейке таблицы БД.
После такого раздрая в плагинах и шаблонах оптимистично говорить о создании крупных магазинов на WordPress сложно. Ибо и WP по структуре своей не подходит для этого, и нормального разработчика не найти.
ну мне кажется хостинг за 1000 р. вместо 300 р. поможет + опытный devops с кешированием.
да да. уже увидел. торопился.
спс
И да, я понимаю, что не критично, но все же:
240 + 29 = 269$
я прошу прощения. поправлю, дело в том, что я писал и работал. Хотел поделиться опытом, а т.к. дел за гланды, допускал досадные ошибки, каюсь не вычитывал. Но надеюсь это не критично, в рамках общего количества минусов :)
последняя версия, обновления

Это приходится объяснять каждому первому, и хорошо если четверть поймёт и не забудет/не забьёт.

К слову про покупку плагинов для WP и лицензию. Есть такой плагин, Advanced Custom Fields — это золотой стандарт для WP, стоит практически на каждом WP-сайте. Вы можете как и купить на него лицензию за расширенный функционал, либо скачать прямо с гитхаба, куда выкладывает полную версия сам автор плагина(правда, иногда, с запозданием на одну-две минорные версии).
У меня куплена максимальная лицензия ещё много лет назад, но устанавливаю все плагины композером, и тот самый ACF я как раз тяну с гитхаба.

Мне кажется что слишком много слов в статье для того чтобы понять что можно купить шаблон и развернуть сайт на вп. Кроме как псевдо нативной рекламы каких то спам баз, я для себя ничего не увидел в этой статье. Может быть это кому то полезно, но не очень в этом уверен)

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

Да это исторически сложилось, что почта и домены на яндексе. Так то да, можно и проще
Sign up to leave a comment.

Articles