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

sertlan

  • Осваиваюсь на форуме
  • 38
  • 0 / 0
Как сделать сортировку тегов на странице материала по алфавиту (а не по id)?
*

sivers

  • Живу я здесь
  • 2596
  • 360 / 0
попробуйте отсортировать их в списке тегов в админке
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

sertlan

  • Осваиваюсь на форуме
  • 38
  • 0 / 0
попробуйте отсортировать их в списке тегов в админке
В админке теги отсортированы вручную по алфавиту, но на странице материала идут по id
*

sivers

  • Живу я здесь
  • 2596
  • 360 / 0
В админке теги отсортированы вручную по алфавиту, но на странице материала идут по id
Тогда можно отсортировать массив тегов в макете материала. Или переопределить макет вывода тегов и в нем отсортировать:
/layouts/joomla/content/tags.php
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

sertlan

  • Осваиваюсь на форуме
  • 38
  • 0 / 0
переопределить макет вывода тегов и в нем отсортировать
Макет переопределен, а как в нем отсортировать?
*

sivers

  • Живу я здесь
  • 2596
  • 360 / 0
Попробуйте так:
Код
usort($displayData, function($a, $b){
    if($a->title < $b->title) return -1;
    return intval($a->title > $b->title);
});
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

sertlan

  • Осваиваюсь на форуме
  • 38
  • 0 / 0
Попробуйте так:
Код
usort($displayData, function($a, $b){
    if($a->title < $b->title) return -1;
    return intval($a->title > $b->title);
});
А куда этот код добавить?
*

sertlan

  • Осваиваюсь на форуме
  • 38
  • 0 / 0
В Joomla 3 работал код:
Код
<?php JArrayHelper::sortObjects($displayData, 'lft', 1, true, true); ?>
добавленный перед:
Код
<?php foreach ($displayData as $i => $tag) : ?>
в файле /templates/[шаблон]/html/layouts/joomla/content/tags.php

В Joomla 4 не работает
*

sivers

  • Живу я здесь
  • 2596
  • 360 / 0
добавленный перед:
вот туда и добавьте
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

sertlan

  • Осваиваюсь на форуме
  • 38
  • 0 / 0
вот туда и добавьте
Работает. Большое спасибо!
*

sertlan

  • Осваиваюсь на форуме
  • 38
  • 0 / 0
Решено: Сортировка тегов на странице материала по алфавиту.

В файле /templates/[шаблон]/html/layouts/joomla/content/tags.php перед строкой:
Код
<?php foreach ($displayData as $i => $tag) : ?>
добавить код:
Код
<?php usort($displayData, function($a, $b){
    if($a->title < $b->title) return -1;
    return intval($a->title > $b->title);
}); ?>



« Последнее редактирование: 30.05.2023, 17:09:29 от sertlan »
*

sivers

  • Живу я здесь
  • 2596
  • 360 / 0
на здоровье
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

Театрал

  • Захожу иногда
  • 232
  • 7 / 0
В Joomla 3 работал код:
Код
<?php JArrayHelper::sortObjects($displayData, 'lft', 1, true, true); ?>
...
В Joomla 4 не работает

В 4-ке JArrayHelper вот так наверное должен заработать:
Код
use Joomla\Utilities\ArrayHelper;

ArrayHelper::sortObjects($displayData, 'lft', 1, true, true);
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Ошибка БД при создании материала

Автор kunsaid

Ответов: 6
Просмотров: 1577
Последний ответ 29.10.2025, 19:36:49
от artem1977gri
Как расположить заголовок материала в под фото в модуле?

Автор sergspb

Ответов: 6
Просмотров: 686
Последний ответ 02.10.2025, 19:18:18
от fbr
Получение объектов из материала(статьи) по ее id

Автор muzzy76

Ответов: 2
Просмотров: 745
Последний ответ 05.07.2025, 10:33:26
от muzzy76
Горизонтальное выравнивание изображений на странице в joomla5

Автор koldun1970

Ответов: 9
Просмотров: 1029
Последний ответ 06.06.2025, 14:54:17
от azm1n
Количество просмотров материала. Реально ли оно?

Автор kysin

Ответов: 3
Просмотров: 947
Последний ответ 21.05.2025, 12:17:07
от wishlight