xandeadx.ru Блог музицирующего веб-девелопера

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 штук.

Написанное актуально для Drupal 6.x
Похожие записи

Комментарии RSS

а в 7мерке ?

Оставить комментарий

Содержимое этого поля является приватным и не будет отображаться публично. Если у вас есть аккаунт в Gravatar, привязанный к этому e-mail адресу, то он будет использован для отображения аватара.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Доступные HTML теги: <a> <i> <b> <strong> <code> <ul> <ol> <li> <blockquote> <em> <s>
  • Строки и параграфы переносятся автоматически.
  • Подсветка кода осуществляется с помощью тегов: <code>, <css>, <html>, <ini>, <javascript>, <sql>, <php>. Поддерживаемые стили выделения кода: <foo>, [foo].

Подробнее о форматировании