Почему woocommerce такой тормозной, я в шоке?!
-
Приветствую! Не хочу, чтобы по провокационному заголовку восприняли в штыки эту тему. Но я правда хочу понять.
Немного воды:
Все время я работал с Bitrix. Про то какой он прожорливый до ресурсов и тормозной все слышали. Но этому есть объяснение: инфоблок Битрикса (единица хранения информации типа wp_post) состоит более чем из 10 таблиц, а когда к нему прикручивается интернет-магазин, то и все 15 будет. Понятно дело, что это порождает большие и медленные запросы к БД. Да и самого php кода в Битриксе очень много.Заглянул в базу WP — таблиц не так уж и много, всяко будет меньше 10 на хранение постов и свойств.
В итоге я решил протестировать это дело и доказать, что Битрикс совсем не токов, как его расхваливает маркетинг. Взял клиентскую 1С базу на 2700 товаров с картинками и свойствами (свойств более 10 на товар всего разнообразных свойств наверное в районе 50 для разных категорий). Категорий тоже много 340.
Поставил стандартную тему Storefront, плагин для обмена с 1С и все, никакого кеша.
Сделал обмен.Тоже самое развернул типовой магазин на Битрикс и залил туда те же самые товары.
Расположил все на хостинге от REG.RU за 300р. оптимизированный для Битрикс (т.е. по мощней по времени скриптов чем другие).ИТОГ:
Страница товара в woocommerce открываться стала 6-9 секунд.
Битрикс же так же с отключенными кешами открывает страницу товаров за 1,5-2 сек.Попробовал выделить и удалить все товары в woocommerce , сайт сразу упал (414 Request-URI Too Large).
Битрикс это выдержал.Поставил плагин посмотреть SQL запросы, в итоге при открытии страницы товаров генерится около 40 запросов вида
SQL:
SELECT t.*, tt.*, tm.meta_value FROM wp_terms AS t INNER JOIN wp_term_taxonomy AS tt ON t.term_id = tt.term_id INNER JOIN wp_term_relationships AS tr ON tr.term_taxonomy_id = tt.term_taxonomy_id LEFT JOIN wp_termmeta AS tm ON (t.term_id = tm.term_id AND tm.meta_key = 'order_pa_с-выносом') WHERE tt.taxonomy IN ('pa_с-выносом') AND tr.object_id IN (1264) GROUP BY t.term_id ORDER BY tm.meta_value
Я так понимаю читаются свойства товаров. Но почему столько запросов, они что в цикле читаются?Вобщем я в шоке. Не могу понять не логичности ситуации. Это когда меньшее количество таблиц в БД порождает большее количество запросов и время выполнения.
Я слышал жалобы на медленность WP но я правда думал, что это нытьё когда на полу-бесплатном хостинге что-то там тормозит. В итоге все правда.Далее эксперименты показали, что все дело именно в свойствах. У товара, который без категории и без свойств, загрузка 0,2 сек. и всего 45 запросов. Как только добавляешь свойства запросы растут, а после включения в несколько категорий уже 500 запросов и 9 сек. на открытие страницы.
Даже не знаю, как сформулировать свой вопрос. Я правда не могу поверить что Битрикс оказался чуть ли не в 10 раз быстрее.
Скажите, с чем технически связана медленность woocommerce (или WP), я хочу понять именно это?
- Тема «Почему woocommerce такой тормозной, я в шоке?!» закрыта для новых ответов.