Новости Joomla

Человек на GitHub ускорил Joomla в 600 раз на объёме 150к+ материалов в 1700+ категориях

Человек на GitHub ускорил Joomla в 600 раз на объёме 150к+ материалов в 1700+ категориях

👩‍💻 Человек на GitHub ускорил Joomla в 600 раз на объёме 150к+ материалов в 1700+ категориях. На старте его сайт на Joomla 3 вообще не смог обновиться на Joomla 5. Пришлось делать экспорт/импорт материалов. Проделав всё это он запустил-таки этот объём данных на Joomla 5. Тестовый скрипт грузил 200 материалов из этого объёма всего за 94 секунды ))) А главная страница с категориями грузилась 20 секунд. Добавив индекс для таблицы #__content

CREATE INDEX idx_catid_state ON #__content (catid, state);
он сократил время загрузки категорий до 1 секунды. Затем наш герой решил поковырять SQL-запрос в ArticleModel, который отвечает за выборку материалов. И решил заменить тип JOIN на STRAIGHT_JOIN для категорий.
// ->from($db->quoteName('#__content', 'a'))->from(    $db->quoteName('#__content', 'a')    . ' STRAIGHT_JOIN ' . $db->quoteName('#__categories', 'c')    . ' ON ' . $db->quoteName('c.id') . ' = ' . $db->quoteName('a.catid'))// ->join('LEFT', $db->quoteName('#__categories', 'c'), $db->quoteName('c.id') . ' = ' . $db->quoteName('a.catid'))
Что сократило загрузку 200 материалов из 150к с 94 секунд до 5. К слову сказать, боевой сайт на Joomla 3 крутится на 12CPU 64GB рамы. А все манипуляции с кодом он делает на базовом 1CPU 1GB сервере и замеры скорости даны именно для базового сервера. Но это всё в дискуссии, хотя в идеале должно вылиться в Pull Requests. Мы - Open Source сообщество, где никто никому ничего не должен. Джунгли. Но человек ищет пути оптимизации Joomla и предлагает решения. Если оказать поддержку и предложить помощь хотя бы с тестированием самых разнообразных сценариев, то возможно эти улучшения смогут войти в ядро. Пусть не быстро, пусть через несколько лет, пусть не все, но войдут. Достаточно предложить руку помощи и приложить немного усилий.
Дискуссию на GitHub можно почитать здесь.@joomlafeed#joomla #community #php

0 Пользователей и 1 Гость просматривают эту тему.
  • 0 Ответов
  • 2850 Просмотров
*

al-teen

  • Глобальный модератор
  • 2385
  • 224 / 10
  • im
Модифицируем mod_zoocategory
« : 02.05.2012, 10:24:47 »
Модифицируем модуль mod_zoocategory на предмет вывода изображений категорий в списке меню. Идем в ../modules/mod_zoocategory и открываем текстовым редактором файлы helper.php и mod_zoocategory.xml.

В файле helper.php находим строку
Код
foreach ($category->getChildren($flat ? true : false) as $category) {

После нее вставляем код
Код
$text_link = $params->get('text_link', 1);			
$show_images = $params->get('show_images', 1);
$images = $params->get('images', 'image_default');
$image_width = $params->get('image_width', '50px');
$image_height = $params->get('image_height', '50px');

Затем находим строку
Код
$result[] = "<a href=\"$url\"$class><span>{$category->name}</span></a>";

Заменяем ее на
Код
			if ($images == 'image_default'){
$result[] = "<a href=\"$url\"$class><img src=".$image['src']." alt=".$category->name." title=".$category->name." style='height:".$image_height.";width:".$image_width.";' /></a>";
} else {

$result[] = "<a href=\"$url\"$class><img src=".$teaser_image['src']." alt=".$category->name." ".$imagesize."  title=".$category->name." style='height:".$image_height.";width:".$image_width.";' /></a>";
}
if ($text_link){
$result[] = "<a href=\"$url\"$class><span>{$category->name}</span></a>";
}

В файл mod_zoocategory.xml после строки

Код
<fieldset name="basic" addfieldpath="/modules/mod_zoocategory/fields">

Вставляем
Код
				<field name="text_link" type="radio" default="1"
label="show text link"
description="show text link"
filter="int"
>
<option value="1">on</option>
<option value="0">off</option>
</field>
<field name="show_images" type="radio" default="1"
label="show image"
description="show image"
filter="int"
>
<option value="1">on</option>
<option value="0">off</option>
</field>
<field name="images" type="list" default="image_default"
label="select image variant"
description="select image variant"
filter="word"
>
<option value="image_default">image default</option>
<option value="teaser_image">teaser image</option>
</field>
<field name="image_width" type="text" default="50px" size="5" label="image width (px or %)" description="Select Image Width" />
<field name="image_height" type="text" default="50px" size="5" label="image height (px or %)" description="Select Image Height" />

Таким образом мы выводим изображение категории в меню категорий.
Присутствуют функции: включение/выключение изображений, выбор между изображениями тизерным и внутри категорийным, выключение текстовых ссылок, назначение размеров отображаемых картинок.
Пример использования в приложенном скриншоте.
Готовая модификация в приложенном архиве.

[вложение удалено Администратором]
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться