В прошлой записи Уменьшаем количество запросов к MySQL в полтора раза был прооперирован модуль Path, в этой будем мучать модуль Comment :)
На каждый запрос информации о ноде, например вывод тизера на главной, модуль Comment выполняет запрос к БД, в котором достаёт число комментариев к этой ноде и информацию о последнем комментарии. Если эта информация нам не нужна, например в этом блоге она нигде не выводится (p.s.: уже выводится), можно избавится от десятка запросов.
Итак, открываем файл modules/comment/comment.module. Идём в строку 596 и находим там такой кусок кода:
case 'load':
return db_fetch_array(db_query("SELECT last_comment_timestamp, last_comment_name, comment_count FROM {node_comment_statistics} WHERE nid = %d", $node->nid));
break;
Закомментим его:
//case 'load':
//return db_fetch_array(db_query("SELECT last_comment_timestamp, last_comment_name, comment_count FROM {node_comment_statistics} WHERE nid = %d", $node->nid));
//break;
Дальше идём в строку 1120 и вместо
function comment_num_all($nid) {
static $cache;
if (!isset($cache[$nid])) {
$cache[$nid] = db_result(db_query('SELECT comment_count FROM {node_comment_statistics} WHERE nid = %d', $nid));
}
return $cache[$nid];
}
вставляем:
function comment_num_all($nid) {
return 0; // hack
static $cache;
if (!isset($cache[$nid])) {
$cache[$nid] = db_result(db_query('SELECT comment_count FROM {node_comment_statistics} WHERE nid = %d', $nid));
}
return $cache[$nid];
}
На этом всё. Как гласит народная мудрость "Быстрый код, это отсутствие кода" — число запросов сократилось на 20 штук.
- Дружим Sape и Internal Page Cache (вставка динамического содержимого в закэшированную страницу)
- Плагин блока, генерящий динамический контент с помощью #lazy_builder
- Тюнинг кэширования блоков с формой
- Оптимизация кэширования больших меню
- Автоматическое удаление устаревших анонимных заказов в статусе "корзина"
Комментарии
а в 7мерке ?
Добавить комментарий