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

Stasweb

  • Завсегдатай
  • 1501
  • 24 / 0
Стоит модуль меню JUX Mega Menu for VirtueMart  на сайте есть пара вопросов по этому модулю.
1. При переходе на сайт меню отображается не всегда.
2. Как можно отсортировать меню по алфавиту.

*

Stasweb

  • Завсегдатай
  • 1501
  • 24 / 0
вот сам модуль
как я понимаю модуль берет ссылки с базы и вот как их отфильтровать не понятно.
В Google много информации как фильтровать вывод с базы данных но мне не понятно какой файл надо править для этого помогите разобраться так как в файле
/modules/mod_jux_vm_megamenu/tmpl/default.php
нет вывода с базы
Спойлер
[свернуть]

но он есть в файле
/modules/mod_jux_vm_megamenu/includes/menu/vm_megamenu.php
Спойлер
[свернуть]

*

Stasweb

  • Завсегдатай
  • 1501
  • 24 / 0
Для сортировки в /modules/mod_jux_vm_megamenu/tmpl/default.php
прописал так
Спойлер
[свернуть]

не сортирует и не выдает ошибок.
Каким способом еще можно отсортировать 
*

kali2005

  • Новичок
  • 1
  • 1 / 0
/modules/mod_jux_vm_megamenu/includes/menu/vm_megamenu.php
order('name');

Код
function fetchVMCategory(&$params = array()){
$lang = JFactory::getLanguage();
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->select(' c.`virtuemart_category_id` AS id, l.`category_description`, l.`category_name` as name, c.`ordering`, c.`published`, cx.`category_child_id`, cx.`category_parent_id` AS parent , c.`shared` ')
->from('`#__virtuemart_categories_ru_ru` l')
->innerJoin('`#__virtuemart_categories` AS c using (`virtuemart_category_id`)')
->leftJoin('`#__virtuemart_category_categories` AS cx ON l.`virtuemart_category_id` = cx.`category_child_id` ')
->where('c.`published` = 1')
->order('name');
$db->setQuery($query);
$items = array();
$vmcategories = $db->loadObjectList('id');
*

Stasweb

  • Завсегдатай
  • 1501
  • 24 / 0
Столкнулся с второй проблемой дублируется меню в Имиджевая продукция и в Услуги в области полиграфии
с чем это связано и как можно исправить
*

Stasweb

  • Завсегдатай
  • 1501
  • 24 / 0
А на 3-й не хочет так работать
Цитировать
/modules/mod_jux_vm_megamenu/includes/menu/vm_megamenu.php
order('name');

Код:
function fetchVMCategory(&$params = array()){
      $lang = JFactory::getLanguage();
      $db = JFactory::getDbo();
      $query = $db->getQuery(true);
      $query->select(' c.`virtuemart_category_id` AS id, l.`category_description`, l.`category_name` as name, c.`ordering`, c.`published`, cx.`category_child_id`, cx.`category_parent_id` AS parent , c.`shared` ')
         ->from('`#__virtuemart_categories_ru_ru` l')
         ->innerJoin('`#__virtuemart_categories` AS c using (`virtuemart_category_id`)')
         ->leftJoin('`#__virtuemart_category_categories` AS cx ON l.`virtuemart_category_id` = cx.`category_child_id` ')
         ->where('c.`published` = 1')
         ->order('name');
      $db->setQuery($query);
      $items = array();
       $vmcategories = $db->loadObjectList('id');


Спойлер
[свернуть]
*

apikron

  • Захожу иногда
  • 152
  • 2 / 0
У меня вопрос по JUX Mega Menu for JoomShopping.
Суть вопроса не в версии магазинов, а в том, как сделать штуки, которые показаны в демо http://demo.joomlaux.com/#jux-jp-mega-menu этой разработки. Подскажите, пожалуйста, как разработчики вывели в меню некоторые товары из магазина и вставили баннер. Они выставлены в выподающем меню Top Selling Dolins&Pets и Brand.
В админке разработки не нашёл этой возможности.
*

Stasweb

  • Завсегдатай
  • 1501
  • 24 / 0
Там есть функция подключить компонент в меню баннер это и есть этот компонент
*

apikron

  • Захожу иногда
  • 152
  • 2 / 0
Там есть функция подключить компонент в меню баннер это и есть этот компонент
Stasweb! Спасибо за ответ! Пока не совсем понял, смотрю, пытаюсь понять Вашу подсказку.
*

Stasweb

  • Завсегдатай
  • 1501
  • 24 / 0
Добавляете поле в ваше меню затем выбираете это поле и в верху выбираете какой модуль туда вставить.
Это в JUX Mega Menu for VirtueMart если у вас JUX Mega Menu то там может быть немного по другому но суть та же
*

apikron

  • Захожу иногда
  • 152
  • 2 / 0
Stasweb! Большое человеческое спасибо! Понял!
*

Liss

  • Захожу иногда
  • 238
  • 10 / 0
Извините за оффтоп, была ли версия этого меню, совместимая с J2.5?
*

Stasweb

  • Завсегдатай
  • 1501
  • 24 / 0
Да была такая. А Вы что на 2,5 еще
*

Liss

  • Захожу иногда
  • 238
  • 10 / 0
ага, и менять в планах нет. в VM оч. много "напилил" в ядре под свои нужды
может, кто может поделиться? а то купил на оф. сайте, не посмотрев, что нужна J3
*

Stasweb

  • Завсегдатай
  • 1501
  • 24 / 0
В ЛС напишите почту сохранилось что то
*

Liss

  • Захожу иногда
  • 238
  • 10 / 0
подскажите, зачем этому модулю необходим установленный K2 компонент? что он от туда цепляет? модуль для VM же
*

Stasweb

  • Завсегдатай
  • 1501
  • 24 / 0
Цитировать
зачем этому модулю необходим установленный K2 компонент?
Почему K2 необязателен. На ту почту что вы дали письмо не уходит дайте другую.
*

Liss

  • Захожу иногда
  • 238
  • 10 / 0
Цитировать
Почему K2 необязателен.
Код
if (!file_exists(JPATH_SITE.DS.'components'.DS.'com_k2')){
      return '<div style="float: left;color:red">This module can not work without the K2 Component</div>';
}
это в /modules/mod_jux_vm_megamenu/elements/megamenu.php
собственно, в админке горит сия надпись, и ничего настраивать не дает
*

Stasweb

  • Завсегдатай
  • 1501
  • 24 / 0
Должно быть
Код
      if (!file_exists(JPATH_SITE.'/'.'components'.'/'.'com_virtuemart')){
      return '<div style="float: left;color:red">This module can not work without the Virtuemart Component</div>';
*

Liss

  • Захожу иногда
  • 238
  • 10 / 0
Такое тоже есть, но находится в другом файле modules/mod_jux_vm_megamenu/tmpl/default.php
*

Stasweb

  • Завсегдатай
  • 1501
  • 24 / 0
 Там чуть чуть другой
вот что там
Код
if (!file_exists(JPATH_SITE.DS.'components'.DS.'com_virtuemart')){
echo  '<div style="float: left;color:red">Этот модуль не может работать без VirtueMart компонента</div>';
вот что вам дал
Код
if (!file_exists(JPATH_SITE.'/'.'components'.'/'.'com_virtuemart')){
return '<div style="float: left;color:red">This module can not work without the Virtuemart Component</div>';
посмотрите в третьем посте от меня
*

Liss

  • Захожу иногда
  • 238
  • 10 / 0
действительно  :dry:
значит, левак я какой-то в интернете нашел. версия 2.0.1

если закоментить проверку на К2, то вроде работает (я просто не знаю, как должно выглядеть, когда действительно работает), но очень долго прогружает страницу (и в админке, и во фронтенде)
*

Stasweb

  • Завсегдатай
  • 1501
  • 24 / 0
Не комментируйте эту проверку
У вас
Код
if (!file_exists(JPATH_SITE.DS.'components'.DS.'com_k2')){
поставьте
Код
if (!file_exists(JPATH_SITE.DS.'components'.DS.'com_virtuemart')){
должно работать.
Посмотрите в консоли может грузит js лишние
*

Liss

  • Захожу иногда
  • 238
  • 10 / 0
да с проверкой без разницы, что удалить ее, что заменить, я ж точно знаю, что VM установлен
а тупило из-за того, что несмотря на выключенную настройку "показывать items в меню" (т.е. товары), эта хренотень все равно тянула из БД весь товар...
в общем запросил у разработчика версию для J2.5, я все ж заплатил, посмотрим, дадут ли
*

mihadmitriev

  • Новичок
  • 9
  • 0 / 0
Здравствуйте Уважаемые!
Скажите пожалуйста почему JUX Mega Menu не меняет Id и css3.
В настройках модуля менял, но не действует. Помогите пожалуйста.

 
*

Stasweb

  • Завсегдатай
  • 1501
  • 24 / 0
Цитировать
Скажите пожалуйста почему JUX Mega Menu не меняет Id и css3.
Проверьте право на запись
/modules/mod_jux_vm_megamenu/assets/css
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Расчёт стоимости товара в VirtueMart за периметр

Автор NIKOLY

Ответов: 0
Просмотров: 473
Последний ответ 04.07.2025, 09:18:31
от NIKOLY
VirtueMart 3 Отображать только товары в наличии!

Автор GaziroFFka

Ответов: 4
Просмотров: 3983
Последний ответ 06.06.2023, 13:55:13
от Akeksandr
SP VirtueMart Category Search

Автор ve1006

Ответов: 10
Просмотров: 7861
Последний ответ 18.01.2023, 10:39:10
от AzMandius
Как вывести модуль в страницу VirtueMart?

Автор harddrop

Ответов: 11
Просмотров: 4868
Последний ответ 13.11.2022, 13:11:37
от Evgen Kulibin
Как правильно настроить покупку в VirtueMart?

Автор varella

Ответов: 1
Просмотров: 2817
Последний ответ 12.10.2022, 16:14:04
от varella