Производительность веб-CMS: страниц в секунду (Joomla, Drupal, Plone, WP) - PullRequest
4 голосов
/ 22 января 2010

Примечание: я не занимаюсь веб-программированием, поэтому простите мое невежество, если вопрос тривиален. Кроме того, пожалуйста, не комментируйте «насколько ошибочно» сравнение этих продуктов из коробки. Вопрос не в том, как они конкурируют друг с другом, а в том, что является причиной невероятной медлительности ВСЕХ из них.

Просто прочитайте о бенчмарке , где были протестированы Joomla, Drupal, Wordpress, Plone3 & 4. Что меня шокировало, так это: из коробки они работали со скоростью 4-14 страниц в секунду. Как это возможно, почему они такие медленные? CMS должна просто запрашивать базу данных и собирать данные, упакованные в красивые шаблоны. БД быстрые. Шаблоны должны быть быстрыми (замена текста, ничего страшного). Наши машины сверхбыстрые, и все же, эти высокопрофильные CMS могут производить только несколько страниц в секунду. Как получилось?

Ответы [ 7 ]

3 голосов
/ 23 января 2010

CMS должна просто запросить базу данных и собрать данные, упакованные в красивые шаблоны.

Не так много. Основные современные системы CMS - невероятно сложные звери. Типичная страница - это не просто основной текст и заголовок, но и динамические запросы контента на основе категорий, которые объединяют информацию во многих областях сайта; не говоря уже о настройке безопасности и пользовательских зонах контента. Например, загрузка http://www.volvogroup.com включает как минимум 7 таких запросов, плюс рекурсию по структуре сайта для создания навигации и подключение к внешним системам для получения новостей и данных об отношениях с инвесторами. Учитывая это, неудивительно, что для обработки нескольких сотен обращений в секунду требуется мощная серверная ферма.

2 голосов
/ 25 января 2010

Они медленные по нескольким причинам:

1 - Большинство из них очень модульные, что означает больше файлов, больше кода и больше запросов к БД.

2 - Они в значительной степени (не так уж много говорят в WordPress) стараются делать все, и повторная разработка системы для каждой возможной ситуации делает ее более сложной и более сложной для настройки.

3 - Большинство из них (в настоящее время) поддерживают как PHP4, так и PHP5, это опять-таки просто дополнительная работа.

4 - Они предположительно сделаны так, что их могут использовать пользователи, не являющиеся техническими специалистами, что означает, что им часто приходится делать что-то не самым эффективным способом, то есть Drupals CCK / Views позволяет людям, которые не могут эффективно создавать программы. Таблицы базы данных и SQL-запросы, недостаток которых заключается в том, что эти таблицы / запросы имеют очень общий дизайн и довольно неэффективны по сравнению с пользовательскими кодами.

5 - Они, как правило, используют множество запросов к БД, Drupal использует 40 или около того для очень простой страницы, и если вы будете искать на их форумах, вы увидите сообщения о том, что некоторые страницы делают сотни или даже более тысячи запросов.

Они, конечно, предлагают кеширование, и Drupal может получить довольно хорошую производительность благодаря таким вещам, как его модуль буста, недостатком является то, что Drupal (и Joomla) торгует в том, что вы можете создать сайт сообщества, форум, Digg как сайт , все сайты, где кеширование ограничено ...

2 голосов
/ 23 января 2010

Потому что для всего этого требуется много обработки. Это не вопрос "запрос, замена, рендеринг". Все эти продукты созданы для того, чтобы соответствовать широкому спектру вариантов использования и быть до некоторой степени расширяемыми, поэтому на самом деле эти три основные операции, о которых вы говорите, разделены на множество операций, каждая из которых требует времени.

При прочих равных условиях - чем гибче система, тем медленнее она будет "из коробки".

1 голос
/ 23 января 2010

Пожалуйста, не обижайтесь на это, но предвосхитить ваш вопрос, объяснив свое незнакомство с веб-программированием, а затем раскритиковав производительность того, что вам кажется «простой» операцией, немного недальновидно. 1001 *

Я бы посоветовал вам больше узнать об общих проблемах, которые решает CMS, а также об общей теории и практике работы динамических веб-страниц и HTTP. Это далеко от простой операции ввода-вывода.

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

1 голос
/ 23 января 2010

Это относительно сложные системы. Они допускают множество хуков для плагинов, поэтому в рабочем процессе есть много шагов от запроса к ответу.

Однако в реальном мире кэширование (как в приложениях, так и в кэш-кодах приложений) является огромным приростом производительности.

Я не знаком с Plone, но PHP CMS по сути должны загружать и интерпретировать почти всю систему при каждом отдельном запросе.

0 голосов
/ 06 февраля 2010

CMS Делает намного больше вещей ...

И, наконец, что не менее важно, не сравнивайте Desktop Software Speed ​​с Wep Aplication.

Есть большая разница

0 голосов
/ 23 января 2010

На мой взгляд:

Поскольку CMS и фреймворки думают обо всем, что вам нужно, вы можете использовать: как

  • Фильтр userinput
  • Создание PDF, шаблон вывода AJAX и многое другое

Это зависит от вашей потребности, что вам действительно нужно

Я не согласен с тем, что вы написали

CMS должна просто запрашивать БД и собирать данные, упакованные в красивые шаблоны.

CMS делает намного больше вещей ...

И, наконец, что не менее важно, не сравнивайте скорость Desktop Software с Wep Aplication.

Есть большая разница

...