Уменьшаем количество запросов при выводе новостей
В DLE всегда подсчитывается количество новостей в выводимом списке коротких новостей, независимо от их количества.
Например бывают ситуации, когда в категории или подкатегории выводится всего 2-5 новостей, а в настройках указано 10 новостей на страницу. Естественно тут навигация не нужна, но DLE об этом узнает только после того как отдельно сделает запрос на подсчет количества новостей по заданным условиям. Вот именно этот запрос мы и будем оптимизировать.
Не ждите, что эта оптимизация даст огромный прирост производительности и снизит нагрузку, но я считаю - если есть возможность что-либо оптимизировать без ущерба для остального, это стоит сделать.
Открыть файл /engine/modules/show.short.php, найти и удалить код:
if( ! isset( $view_template ) ) {
$count_all = $db->super_query( $sql_count );
$count_all = $count_all['count'];
} else
$count_all = 0;
Найти строку:
$db->free( $sql_result );
После нее вставить:
if( !isset( $view_template )){
if($i >= $config['news_number']){
$count_all = $db->super_query( $sql_count );
$count_all = $count_all['count'];
}else $count_all = $i;
}else $count_all = 0;
Теперь если в категории или в любом другом выводе списка коротких новостей количество новостей меньше, чем указанное в настройках, то запрос на подсчет количества новостей не будет производится за ненадобностью. Подсчет производится для построения всех страниц навигации.
Комментариев 0