Новости 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 Ответов
  • 1006 Просмотров
*

romagromov

  • Давно я тут
  • 692
  • 9 / 3
Здравствуйте!
Делаю мультиязычный сайт.
Вот есть меню категорий, там 200 элементов.
Копирую все эти пункты в другое меню и указываю новый язык.
Они копируются, но без связи друг с другом.
Не тыкать же в каждый пункт и вручную указывать связь.
*

sivers

  • Живу я здесь
  • 2596
  • 360 / 0
Если лень ставить вручную, то можно было и не копировать их. Настроить макет меню, чтоб подхватывал языковую переменную в названии и переводы через переопределения яз.констант сделать. Только главные страницы связать, чтоб переключатель работал.
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

romagromov

  • Давно я тут
  • 692
  • 9 / 3
Если лень ставить вручную, то можно было и не копировать их. Настроить макет меню, чтоб подхватывал языковую переменную в названии и переводы через переопределения яз.констант сделать. Только главные страницы связать, чтоб переключатель работал.


Так при чем тут лень? Просто по логике, все меню на всех языках должны быть связаны.
Тогда на странице одного языка мы получаем корректный код rel="alternate" hreflang="de-DE"
это важно для ПС.
И без такой связки этого не будет.
А в моем случае 200х10 языков - уйдет неделя на ручную связь.
*

sivers

  • Живу я здесь
  • 2596
  • 360 / 0
А в моем случае 200х10 языков - уйдет неделя на ручную связь.
Ну вот, если надо делать, но не хочется - это и есть лень )))
Когда лень делать вручную - надо начинать кодить. Либо обработчик всего меню (после копирования). Либо плагин, который в момент сохранения пункта меню будет делать привязки. Можно попробовать на событие onBeforeSave - посмотреть где там передаются связи и дописывать остальные. Тогда в БД Joomla сама сохранит.
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

romagromov

  • Давно я тут
  • 692
  • 9 / 3
Ну вот, если надо делать, но не хочется - это и есть лень )))
Когда лень делать вручную - надо начинать кодить. Либо обработчик всего меню (после копирования). Либо плагин, который в момент сохранения пункта меню будет делать привязки. Можно попробовать на событие onBeforeSave - посмотреть где там передаются связи и дописывать остальные. Тогда в БД Joomla сама сохранит.

Да эта хрень должна из коробки работать.
Очевидно же, мы копируем целое меню на другой язык.
Это же маразм в 21 веке такой херней страдать. Либо сиди тыкай неделю, либо пиши плагины.
Есть FlexiContent - шикарный CCK для Joomla. Там все эти связи работают для материалов.
Там вообще можно пакетно перевести 1 материал на все языки, и все его переводы будут в связке.
А можно взять 300 материалов и продублировать их на новый язык, и естественно тоже будет связка.
Таким образом, чтобы продублировать и связать 300 материалов, переведя их на 10 языков и получим на выходе 3000 материалов нужно около 3 минут.
А тут такой треш.  :o
*

romagromov

  • Давно я тут
  • 692
  • 9 / 3
Короче, написал им на баг трекере.
Такого не должно быть.
Сама J4 - прекрасна. Я еще с 1.5 сижу на Joomla.
Но такая фигня не должна происходить.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Верхнее меню в версии для ПК как сделать на весь экран?

Автор web1

Ответов: 0
Просмотров: 164
Последний ответ 23.10.2025, 19:52:02
от web1
Навигационное меню

Автор rizzardi

Ответов: 0
Просмотров: 676
Последний ответ 09.04.2025, 07:44:13
от rizzardi
После обновления с Joomla4 до Joomla5 не выбирается тип пункта меню

Автор keykeeper

Ответов: 1
Просмотров: 907
Последний ответ 19.03.2025, 14:57:02
от keykeeper
Модуль меню, если ли решение!

Автор Tavol

Ответов: 0
Просмотров: 664
Последний ответ 11.02.2025, 23:19:49
от Tavol
Вопрос про макет отображения Блога Категорий - в меню

Автор Lann

Ответов: 7
Просмотров: 933
Последний ответ 31.01.2025, 16:12:36
от Lann