Новости 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 Гость просматривают эту тему.
  • 5 Ответов
  • 1075 Просмотров
*

kontrast

  • Захожу иногда
  • 122
  • 2 / 0
мне надо сгенерировать файл в компоненте
тоесть мне ненадо его выводить а надо только достать, подставить свои значения и сохранить на диске
через контролер и такс перекинул задачу в хелпер с функциями
достал данные
но незнаю как достать нужный мне шаблон из папки
подскажите решение
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
достать шаблон вида компонента - это значит достать уже готовый HTML, который этот шаблон выдает, вы уверены, что именно это вам нужно?
если вам не нужна разметка, а только голая структура данных, то вам необходима модель компонента, а не шаблон
*

kontrast

  • Захожу иногда
  • 122
  • 2 / 0
мне надо сохранить например в файл /cat.txt
HTML того как выводиться эта категория
тоесть
<div class="cat"><h2>cat title</h2>...материалы, подкатегории и т д </div>
тоесть мне надо достать шаблон категории и запихнуть туда данные которые я уже имею
и сохранить это все в файл
данные я достал
знаю куда и как записать
но как конвертнуть имеющиеся обьект категории в HTML незнаю
*

kontrast

  • Захожу иногда
  • 122
  • 2 / 0
тоесть незнаю как получить текстовую строчку в соотвествии с шаблоном
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
Код: php
	public function renderView($name, $componentName, $format = 'raw', $params = array())
{
$name = ucfirst(strtolower($name));
$componentName = ucfirst(strtolower($componentName));
$format = (!trim($format)? 'raw' : strtolower($format));
$model = JModelLegacy::getInstance($name, $componentName.'Model');
$model->setState('catid', $params['catid']);
include_once JPATH_COMPONENT.'/views/'.strtolower($name).'/view.'.$format.'.php';
$className = $componentName.'View'.$name;
$view = new $className();
$view->setModel($model, true);
$view->catid = $params['catid'];
ob_start();
$view->display();
$out = ob_get_clean();
return $out;
}
« Последнее редактирование: 16.03.2016, 17:37:56 от AlekVolsk »
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
обратите внимание на формат: HTML может выдать не только вид, но и всю страницу основного шаблона вместе с видом компонента, raw гарантированно выдаст только вид компонента
если нужный вид не имеет файла view.raw.php, то сделайте копию view.html.php и переименуйте соответственно (по возможности, есс-но)

PS: а зачем вам?
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться