Недавно на форуме разработчика обсуждали смежную тему.
Сам могу сказать, что занимался разработкой на 4-х разных CMS + Ror + CodeIgnitor - NetCat очень удобен для небольших и средних проектов без машапов и интеграций.
По скорости вопросов не было.
Недавно пришлось разбираться почему стал медленно работать сайт, разработанный на NetCat'e. В процессе выяснилось, что для формирования главной сраницы произоводилось ~150 запросов в БД.
Я сначала не поверил своим глазам, а потом пришёл в ужас.
После некоторых манипуляций удалось убрать около 100 лишних запросов.
Хочу рассказать о некоторых выводах и предостеречь некоторых разработчиков.
1. Не надо использовать, функцию s_list_class если подобных вызовов набирается хотя бы > 3 Дело в том, что вызов такой функции приводит к нескольким запросам к БД (от 5 и гораздо больше) (получить шаблон, данные компонента и т.п.) Если на странице нужно вывести данные из другого компонента, то лучше написать функцию для вывода этих данных в functions.inc.php дефолтного модуля. В подобном случае практически всегда можно обойтись 1 запросом.
Вообще, один вызов s_list_class может создавать десятки запросов к БД! В зависимости от компонента, объекты которого выводятся.
2. Забудьте про opt(). Используйте (<if> ? <true> : <false> )
Тут дело в том, что даже если условие в opt вернуло false, то код все равно будет выполнен, но не будет выведен на странице его результат.
3. Будьте аккуратны в использовании компонентов с полем "Файл". При выводе списка объектов такого компонента будет будет только раз сделан запрос на получение данных о файле, сколько объектов выводится. А если таких полей типа "файл" два, то и запросов будет в два раза больше. Если три, то в три и т.д.
Т.е. если у нас есть компонент "фотогалерея" и в нем 2 поля "файл" то для вывода 10 последних фотографий будет сделано больше 20 запросов к БД
Вообще, запросы в цикле - это крайнее зло! Избегайте этого.
4. Почти та же ситуация с голосованием. При выводе опроса будет столько запросов к БД, сколько вариантов ответа в нем сделано.
5. Создавая новые компоненты в которых потом будет осуществляться выборка и сортировка по разным условиям поставьте необходимые индексы для таблицы компонента. Это может существенно ускорить его работу.
Сам могу сказать, что занимался разработкой на 4-х разных CMS + Ror + CodeIgnitor - NetCat очень удобен для небольших и средних проектов без машапов и интеграций.
По скорости вопросов не было.