Реальный пиарCmsJoomla → Оптимизация механизма загрузки параметров мамботов

Оптимизация механизма загрузки параметров мамботов

оптимизация сайта запросы

Сегодня, просматривая список запросов, которые Joomla выполняет при отображении страницы, обратил внимание на некоторую избыточность этих запросов. В первую очередь, это касается загрузки мамботами своих параметров. В результате небольших экспериментов была сделана модификация, которая позволяет сэкономить количество выполняемых запросов при использовании стандартных мамботов.
Введение в механизм загрузки параметров мамботов

У большинства мамботов, используемых в Joomla, есть параметры, которые можно настроить при редактировании мамбота в Менеджере мамботов административной панели сайта. При открытии страницы сайта ядро Joomla производит загрузку опубликованных мамботов и затем, по необходимости, их вызывает.

Примерно в версии 1.0.8 разработчиками была произведена оптимизация Joomla по сокращению количества запросов к базе данных. В частности, это коснулось и механизма загрузки параметров мамботов. После этой модификации код загрузки параметров в мамботах принял вид (на примере мамбота MosImage):
// check if param query has previously been processed
if ( !isset($_MAMBOTS->_content_mambot_params['mosimage']) ) {
// load mambot params info
$query = "SELECT params"
. "n FROM #__mambots"
. "n WHERE element = 'mosimage'"
. "n AND folder = 'content'"
;
$database->setQuery( $query );
$database->loadObject($mambot);

// save query to class variable
$_MAMBOTS->_content_mambot_params['mosimage'] = $mambot;
}

// pull query data from class variable
$mambot = $_MAMBOTS->_content_mambot_params['mosimage'];

Как видно из кода, разработчики предложили вариант сохранения прочитанных параметров мамбота в переменную глобального объекта $_MAMBOTS. И при следующей загрузке этот запрос уже не выполняется. Этим шагом получилось избавиться от повторной загрузки параметров.

Но, посмотрев код загрузчика мамботов в joomla.php, я увидел, что параметры мамботов и так выбираются в запросе при загрузке мамботов. Поэтому, появляется возможность проинициализировать массив _content_mambot_params еще на этапе загрузки мамботов, и тем самым вообще исключить запросы на загрузку параметров из самих мамботов.
Описание модификации механизма загрузки параметров мамботов

Перед началом модификаций рекомендую создать резервную копию изменяемых файлов. Если у вас вдруг что-то не получится — наличие резервной копии позволит вам откатить изменения и восстановить работоспособность сайта.
Открываем файл /includes/joomla.php
Находим в нем строчки:
// load query into class variable _content_mambots
if (!($this->_content_mambots = $database->loadObjectList())) {
//echo "Error loading Mambots: " . $database->getErrorMsg();
return false;
}
и после них добавляем небольшой кусочек кода:
foreach( $this->_content_mambots as $mambot ) {
$this->_content_mambot_params[$mambot->element] = $mambot;
}
Сохраняем изменения в файле.

После выполнения указанной модификации, параметры мамботов группы Content будут инициализироваться сразу же при загрузке мамботов этой группы. И впоследствии дополнительные запросы выполняться не будут.


Источник: http://joomlaportal.ru

Рекомендуем



Оптимизация параметров мамботов Поэтому, появляется возможность проинициализировать массив _content_mambot_params еще на этапе загрузки мамботов, и тем самым вообще исключить запросы на загрузку параметров из самих мамботов


Улучшаем механизм оценки статей в Joomla Для того, чтобы затруднить процесс накрутки рейтинга вполне достаточно будет запоминать IP-адрес не последнего оценившего материал пользователя, а всех, кто принял участие в оценке


Инструкция по обновлению с Joomla 1.0.x на Joomla 1.5 Stable В случае, если у Вас установлены сторонние расширения, Вам необходимо установить соответствующие плагины для компонента-мигратора Обратитесь за этими плагинами к авторам расширений