Внесу свое слово в данную дискуссию
разворачиваю сайт портальной структуры (юзеров несколько сотен, статей несколько тысяч, фоток несколько тысяч, пару сотен мп3 и прочего), поэтому вопросами оптимизации заинтересовался во вторую голову (в первую -- общей функциональностью
![Azn :)](https://joomlaforum.ru/Smileys/default/azn.gif)
Итак, что дал бенчмарк:
Время загрузки главной страницы:
860 мс -- много (из них порядка 700 уходило на запросы к БД)
начал разбираться. Оказалось, выполняется несколько десятков запросов вида
SELECT m.id FROM #__content AS i LEFT JOIN #__sections AS s ON i.sectionid = s.id LEFT JOIN #__menu AS m ON m.componentid = s.id WHERE m.type = 'content_section' AND m.published = 1 AND i.id = 685;
каждый из них отъедал всего 5,7мс, но в сумме выходило прилично...
Смотрим в код: в части модулей (тот же ньюсфлэш) используется стандартная функцию для определения пункта меню, которому соответствует данный материал, вызывается как-то так
$Itemid = $mainframe->getItemid( $row->id, 0, 0, $bs, $bc, $gbs );
Все бы ничего, но на
каждую ссылку на материал на главной странице шло 2 долнительных запроса к БД
Это хачится врубанием определения Itemid для каждой статьи в общем запросе (в том, который выбирает id статьи, рейтинг ее, например, комментарии к ней и прочее)
Например:
$query = "SELECT a.id, a.fulltext, a.title,a.created_by,u.name as author,m.id as Itemid"
."\n FROM #__content AS a"
."\n LEFT JOIN #__users AS u on u.id = a.created_by"
."\n LEFT JOIN #__menu AS m ON m.componentid = a.sectionid"
Эти хаки помогли уменьшить время до
270 мс (с учетом того, что главная при всех отключенных модулях загружалась за 160 мс -- предполагаю, что это время работы системных обращений к БД и самого пхп движка)
Далее, насчет кэширования
При отключенном -- время обработки главной страницы примерно 266 мс
При включенном (во всех возможных модулях и конфигурации) -- 265 мс
Конечно, что-то дает, но я бы начал с оптимизации запросов к БД -- это наиболее узкое место в джумле
Либо я у не умею настраивать кэширование...
З.Ы. 270мс больше 266 только потому, что 270 -- это еще и время коннекта и проч., а 265 -- время чистой обработки страницы
З.Ы.Ы. тесты проводились с помощью ab (apache benchmark), тестовый сервер = П4, 2,8ГГц, 1Гб. В качестве боевого планируется кластер 2(3) Athlon x64 3Ghz, 1Gb
З.Ы.Ы.Ы. хост
http://creative.kupisex.nu