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

MrRobby

  • Новичок
  • 5
  • 0 / 0
Здравствуйте! Дело в том, что есть самописный модуль меню для Joomla. При построении ссылки он не добавляет Itemid,а он нужен для корректного вывода "хлебных крошек". Помогите пожалуйста исправить скрипт:) Пытался как-то объеденить со стандартным модулем меню Joomla, но безрезультатно:(
Вот содержание скрипта: (модуль состоит только из этого одного файла)

Код
<div class="head_menu">
<ul class="menu" id="topnav">
<?php
$menu_name = $params->get('menutype');
$menu = &JSite::getMenu($menu_name);
$items = $menu->getItems('menutype',$menu_name, false);
$menus = array();
//var_dump($items);
foreach ($items as $item)
{
if ($item->parent == 0)
{
echo '<li><a href="'.$item->link.'">'.$item->name.'</a>';
$flag = 0;
foreach ($items as $child)
{
if ($child->parent == $item->id)
{
$flag = 1;
}
}
if ($flag == 1)
{
echo '<div class="sub">';
foreach ($items as $child)
{
if ($child->parent == $item->id)
{
echo '<ul style="width: 225px;">';
echo '<li><a class="title_menu" href="'.$child->link.'">'.$child->name.'</a></li>';
foreach ($items as $child2)
{
if ($child2->parent == $child->id)
{
echo '<li><a href="'.$child2->link.'">'.$child2->name.'</a></li>';
}
}
echo '</ul>';
}
}


echo '</div>';
}
echo '</li>';

}
}
?>
</ul>
</div>
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
если в var_dump($items); видны иды итемов, то они и есть Itemid. Просто добавь их конкатенацией.
*

MrRobby

  • Новичок
  • 5
  • 0 / 0
А можно по подробней? :)
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
*

MrRobby

  • Новичок
  • 5
  • 0 / 0
есть просто id но itemid нету(
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
*

MrRobby

  • Новичок
  • 5
  • 0 / 0
А как тогда его присоединить к ссылке? Подскажите пожалуйста((
*

MrRobby

  • Новичок
  • 5
  • 0 / 0
Все, вопрос решен)) Спасибо за помощь! Сделал вот так:
Код
<div class="head_menu">
<ul class="menu" id="topnav">
<?php
$menu_name = $params->get('menutype');
$menu = &JSite::getMenu($menu_name);
$items = $menu->getItems('menutype',$menu_name, false);
$menus = array();
//var_dump($items);
foreach ($items as $item)
{
if ($item->parent == 0)
{
echo '<li><a href="'.$item->link.'&amp;Itemid='.$item->id.'">'.$item->name.'</a>';
$flag = 0;
foreach ($items as $child)
{
if ($child->parent == $item->id)
{
$flag = 1;
}
}
if ($flag == 1)
{
echo '<div class="sub">';
foreach ($items as $child)
{
if ($child->parent == $item->id)
{
echo '<ul style="width: 225px;">';
echo '<li><a class="title_menu" href="'.$child->link.'&amp;Itemid='.$item->id.'">'.$child->name.'</a></li>';
foreach ($items as $child2)
{
if ($child2->parent == $child->id)
{
echo '<li><a href="'.$child2->link.'&amp;Itemid='.$child2->id.'">'.$child2->name.'</a></li>';
}
}
echo '</ul>';
}
}


echo '</div>';
}
echo '</li>';

}
}
?>
</ul>
</div>
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

убрать из меню заголовки h3

Автор nexter

Ответов: 19
Просмотров: 8693
Последний ответ 03.02.2020, 18:49:47
от durte
При добавлении нового пункта меню не отображается содержимое

Автор Denko

Ответов: 2
Просмотров: 3816
Последний ответ 16.01.2020, 18:40:55
от Denko
Не нажимается пункт меню на мобильной версии

Автор Sensession

Ответов: 7
Просмотров: 5467
Последний ответ 04.01.2020, 16:45:27
от xpank
Не отображаются пункты в меню

Автор physic

Ответов: 20
Просмотров: 23940
Последний ответ 20.09.2019, 16:54:01
от beliyadm
Как в ARI Ext Menu добиться работы параметра "Показать в меню"?

Автор vasmed

Ответов: 1
Просмотров: 4164
Последний ответ 01.03.2019, 11:12:18
от vasmed