Drupal → Продолжаем резать, модуль Comment
В прошлой записи Уменьшаем количество запросов к 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 штук.
Комментарии
а в 7мерке ?
Оставить комментарий