Есть мнение, что Joomla, плохо написанная CMS, которая имеет большие проблемы с производительностью. В этом посте будет приведен пример того, почему Joomla сейчас является одной из наиболее качественных CMS.
Этот эксперимент поставил Денис Сметанников - разработчик популярного расширения JBZoo.
Суть эксперимента проста, заставить выполнить одни и те же операции две популярных CMS. И так смотрим картинки битвы Joomla vs WordPress.
Не буду даваться в технические подробности, просто констатирую:
- Joomla потребовалось в два раза меньше оперативной памяти.
- Joomla справилась в 4 раза быстрее.
Для тех кого интересуют подробности этого теста могут ознакомится с результатами на Travis CI.
Комментарии
Все сделано честно по codex без оверхеда, на протяжении месяца курения мануалов, бестпрактис и самого кода
https://github.com/JBZoo/CrossCMS/tree/master/src/Wordpress
К слову, либа нужна НЕ для сравнения скорости CMS. Это очень тонкая абстрактная прослойка для расширения JBZoo 3.0, который будет работать одновременно на 3х CMS. Пока обкатываем только две. Все эти тесты нужны только для того чтобы быть уверенным что прослойка работает одинакового вне зависимости от платформы и версии PHP.
Если есть вопросы - пишите ;)
/* вариант ответа: "просто потому что могу" тоже катируется :) */
Наша цель другая - не писать два разных расширения и сделать одно, прогонять тесты для двух разных систем одновременно. Использовать cms как библиотеку. Пока что получается не хуже чем у YOOtheme WK2. Если посмотреть два дистрибутива wk2, то разница лишь в нескольких файлах.
т.к. в joomla до сих пор нет поддержки custom fields из коробки (только не надо мне про стороние костыли говорить).
а тем временем в wordpress выкатили еще и rest api, в том числе и с поддержкой custom fields в rest api
http://v2.wp-api.org/reference/posts/meta.html
Joomla: JFactory::getApplication()->input->get()
Wordpress: $wp_query->get()
Или почтовые функции, где каждая CMS использует в итоге PHPmailer.
Или простая функция обращения в базу, или escape переменных перед запросом sql
Смотрите, код чистый, тут нет оверхеда - https://github.com/JBZoo/CrossCMS/blob/master/src/Wordpress/Database.php
Скорость падает в CMS
Казалось бы, чему тут тормозить, например, при попытке взять переменную из реквеста. а-ннет... В купе разница получается аж в несколько раз. Что больше всего дает вес, не знаю. Мне это не особо интересно.
--------------
Тут разговор не про то расширения, у кого какие кастомные поля, пор такие сложности как рест... А про то почему самые базовые(!) и самые важные функции CMS так сильно отличаются друг от друга по скорости при прочих равных. В 2 раза - это перебор...
Тут говорится о том, что оптимизация кода в WP при прочих равных очень плохая, при том, что API Joomla в разы богаче и функциональней.
так суть в том что в WP это не делается, а используется из коробки
а ну этим все сказано - какие то непонятные прослойки, всегда будут ограничивать производительность и нарушать философию конкретной CMS.
Иначе это разговор не о чем, и нет никакого смысла его продолжать...
Не правильно сравнивать этот подход с android/ios, т.к. в последнем разное абсолютно все, начиная от языка, всех вендоров, всего софта, библиотек, OS и заканчивая железом. Только цель одна - юзеры и их сервисы. А тут только CMS, которая по сути нужна нам чтобы получился наш HTML обрамленный шаблоном. Из системы нам нужны только простые вещи, типа роутинга, управления главным шаблонов (title, например), подключение в базу.
Весь "Best parctice" WP крутится на огромной куче хуков, глобальных переменных, фильтрах, функциях без функционального подхода... и попытках поддерживать работу плагинов, которые были написаны лет так 10 назад (с код-стайлом того времени). И это по вашему "прекрасно"? :) Или расскажите мне прелести "кодфешена" WP ?
Смотрю WooCommerce, и что же вижу... они используют свою прослойку в виде массы классов, абстракций. Намного приятнее читать код. А "подход WP" у них помечен как местами как "deprecated". Даже файлы есть такие. О, боги! Неужели они отклонились от стандартов WP чтобы сделать одно из самых популярных расширений? Хм...
Пример шикарного кода WP - https://github.com/WordPress/WordPress/blob/master/wp-includes/functions.php
Просто шмат из ~300 функций сразу на все случаи жизни, добрая доля которых использует смесь HTML+PHP и даже JS. И среди этого стоит искать что-то вроде status_header/nocache_hea ders чтобы просто сделать 404-ю вместо того чтобы кинуть исключение с нужным кодом как в любых других фреймворках.
А в WP я не смог найти никакого аналога. Есть всякие хуки, которые позволяют перехватить фрагменты страницы, например заголовок статьи, ее тело, меню и т.д., но найти способ получить код всей сформированной страницы средствами API я не смог. Буду благодарен, если кто-то подскажет решение ;)
У меня на днях такой вопрос будет стоять особенно остро и скорее всего все упрется в фильтры и хуки. Пока надеюсь, что подобные решения вроде Hookr помогут мне. Недавний пост на CMScafe как нельзя кстати, пролил луч надежды - https://cmscafe.ru/razrabotka/747-hookr-besplatnyj-plagin-otobrazhayushchij-khuki-v-wordpress
Или я рано радуюсь?)
Результаты - http://llfl.ru/eeu9jr Все код есть на гитхабе.
Опять же, если я сравниваю как-то не так, сделал не правильную инициализацию WP, то кто-нибудь, дайте мне знать :)
Мне это сейчас очень интересно.
Допустим как вы выведите виджет WP в какой то определенной категории?? Ответ будет, а ни как будет скорей всего писать код
И таких примеров, когда вроде бы простая задача в WP это целое дело. А вот посты писать, в WP да удобно.