чё тут думать - лезть в код и править
файл path.inc
Вместо
<?php
function drupal_init_path() {
if (!empty($_GET['q'])) {
$_GET['q'] = drupal_get_normal_path(trim($_GET['q'], '/'));
}
else {
$_GET['q'] = drupal_get_normal_path(variable_get('site_frontpage', 'node'));
}
}
?>
ставить
<?php
function drupal_init_path() {
global $map_alias;
$c=count($map_alias);
if (empty($c))
{
$sql = "Select src,dst FROM {url_alias} ";
$res=db_query($sql);
while( $row=db_fetch_array($res))
{
$map_alias[$row['src']]=$row['dst'];
}
}
if (!empty($_GET['q'])) {
$_GET['q'] = drupal_get_normal_path(trim($_GET['q'], '/'));
}
else {
$_GET['q'] = drupal_get_normal_path(variable_get('site_frontpage', 'node'));
}
}
?>
вместо
<?php
function drupal_lookup_path($action, $path = '') {
static $map = array();
static $count = NULL;
if ($count === NULL) {
$count = db_result(db_query('SELECT COUNT(pid) FROM {url_alias}'));
}
if ($action == 'wipe') {
$map = array();
}
elseif ($count > 0 && $path != '') {
if ($action == 'alias') {
if (isset($map[$path])) {
return $map[$path];
}
if ($alias = db_result(db_query("SELECT dst FROM {url_alias} WHERE src = '%s'", $path))) {
$map[$path] = $alias;
return $alias;
}
else {
$map[$path] = $path;
}
}
elseif ($action == 'source') {
if ($alias = array_search($path, $map)) {
return $alias;
}
if (!isset($map[$path])) {
if ($src = db_result(db_query("SELECT src FROM {url_alias} WHERE dst = '%s'", $path))) {
$map[$src] = $path;
return $src;
}
}
}
}
return FALSE;
}
?>
ставим
<?php
function drupal_lookup_path($action, $path = '') {
global $map_alias;
static $map = array();
if ($action == 'wipe') {
$map = array();
}
elseif ($path != '') {
if ($action == 'alias') {
if (!isset($map_alias[$path])) $map_alias[$path]=$path;
return $map_alias[$path];
}
elseif ($action == 'source') {
if (is_array($map_alias) and $alias = array_search($path, $map_alias)) {
return $alias;
}
else return False;
}
}
return FALSE;
}
?>
В итоге получаем один запрос к базе вместо 60-70.