ArtioSEF performance hack - ускоряем CMS Joomla |
| Written by Alex Brunov | |
| Воскресенье, 09 Декабрь 2007 | |
|
Еще одно улучшение для ускорения работы сайта на SEO Joomla и снижение нагрузки на базу данных сервера, которое вошло в данную сборку и ускоряет работу CMS Joomlа при включении SEO в глобальной конфигурации.
На чем основана идея:
Когда мы включаем ЧПУ преобразование ссылок, то ARTIO JoomSef при каждой загрузке любой страницы запрашивает из базы данных информацию о всех ссылках – меню форума, компонентов и других, которые находятся на этой странице – это создает сильную нагрузку на базу данных. Одно из решений удачных – это кэширование успешных запросов, чтобы не делать лишних обращений к базе.
Как сделать это изменение:
- сделать бэкап файла includes/database.php
- открыть файл includes/database.php
- сделать в нем следующие изменения в функции loadResult ():
найдите -
function loadResult() {
и удалите ее и все между
/**
* This method loads the first field of the first row returned by the query.
*
* @return The value returned in the query or null if the query failed.
*/
И
/**
* Load an array of single field results into an array
*/
затем вставьте модифицированную функцию loadResult вместо удаленного:
function loadResult() {
$ret = null;
/*
* mod by teachmejoomla
*/
if(stripos($this->_sql,'mos_redirect')&&stripos($this->_sql,'select')!==false)
{
$cachename = md5($this->_sql);
global $mosConfig_absolute_path;
global $mosConfig_cachepath, $mosConfig_cachetime;
require_once( $mosConfig_absolute_path . '/includes/Cache/Lite/Function.php' );
//echo $this->_sql;
$lifetime=$mosConfig_cachetime;
$cache = new Cache_Lite(
array("cacheDir" => $mosConfig_cachepath,
"lifeTime" => $lifetime) );
if ($cachedquery = $cache->get($cachename))
{
//echo "CACHE HIT: $this->_sql";
$row = unserialize($cachedquery);
}
else
{
//echo "CACHE MISS: $this->_sql";
/*
* moved
*/
if (!($cur = $this->query())) {
$cache->delete();
return null;
}
/*
*
*/
$row = mysql_fetch_row( $cur );
if ($row) $cache->save(serialize($row),$cachename);
mysql_free_result( $cur );
//print_r($this->_cursor);
}
$ret = $row[0];
}
else
/*
*
*/
{
if (!($cur = $this->query())) {
return null;
}
if ($row = mysql_fetch_row( $cur )) {
$ret = $row[0];
}
mysql_free_result( $cur );
}
return $ret;
}
Все, загрузите этот измененный файл обратно на сервер. Источник: http://www.teachmejoomla.net/joomla/mambo-tutorials-and-howtos/core-hacks/artiosef-performance-hack.html
|
|
| Last Updated ( Воскресенье, 09 Декабрь 2007 ) |

