У меня при включенном кеше на главной странице при 10 выведенных топиках (без фото, только название и одно доп.поле), судя по статистике, отрабатывает 21 запрос в базу. Если глянуть в логи запросов, то там 20 запросов вида
SELECT mr.mresource_id AS ARRAY_KEY, mrt.target_type, mrt.target_id, mr.* FROM cs_mresource AS mr, cs_mresource_target as mrt WHERE 1=1 AND ((target_type IN ('photoset'))) AND mrt.mresource_id = mr.mresource_id AND (mr.type & 64)>0 AND mrt.target_type IN ('photoset') AND mrt.target_id = 16 ORDER BY sort DESC, mresource_id ASC LIMIT 0, 1
По 2 на каждый топик из 10.
Если в функции GetTopicsAdditionalData модуля Topic закомментировать строки
if ($oTopic->getPhotosetMainPhotoId()) {
$aPhotoMainId[] = $oTopic->getPhotosetMainPhotoId();
}
то запросов станет на 10 меньше.
Соответственно несколько вопросов:
1. Где еще и почему в движке идет по два одинаковых запроса к базе к каждому топику?
2. Мне не нужны фотосеты в проекте, и у топиков есть только названия, текст и одно дополнительное поле. Как можно убрать лишние запросы к мультимедиа-ресурсам?
3. Как можно заняться отладкой работы кеша? Почему-то мне кажется, что еще сегодня утром у меня на главной был только 1 запрос при включенном кеше.
10 комментариев
Сдаётся мне, это будешь искать сам.
Но вот вообще насчет фотосета — а как понять, используется у вас фотосет или нет? Где-то в глобальных настройках сайта прописывать, что фотосета нет?
Но на самом деле это не так важно. Гораздо важнее, что при выводе 10 топиков запрос идет для каждого топика в отдельности. По общей логике, принятой в движке, это должен быть один запрос на 10 топиков. Буду копать, что там не так.
По идее, на главной ни то, ни другое не используется… Плюс на странице топика тоже есть подобный запрос и на других страницах.
, кеш отдается в Gzip