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

Alex_gs

  • Захожу иногда
  • 161
  • 2 / 0
Joomshop + модули от SmartAddons. Но это не принципиально.
Модули выводят картинки товаров, забирая их из кэша.
На страничке несколько модулей с разными опциями вывода товаров

Вот фрагмент кода одного из модулей, который генерит картинку:
<div class="item-img-info">
   <a href="<?php echo $item->link;?>" <?php echo JsSlider::parseTarget($params->get('target'));?>>
      <?php $img = JsSlider::getAImage($item, $params); echo JsSlider::imageTag($img);?>
                              </a>


Вот фрагмент HTML, который генерит модуль:

<div class="item-img-info">
   <a href="/tgshop/hats/tg-buff" >
      <img src="/administrator/cache/resized/bb179fbef2d9321b67998bfa00d899e4.jpg" alt="Бафф "Тарасова Гора"" title="Бафф "Тарасова Гора""/>                              </a>
                           </div>


Картинка, ссылка на которую указано, реально присутствует на хосте.
Т.е. все правильно
Если почистить кэш броузера, то при открытии страницы ни одна картинка не выводится.
Так происходит со всеми картинками, данных модулей на странице.

Но!
Если вручную, при помощи правой кнопочки мыши, открыть любую  картинку в новой вкладке, она открывается. И потом при перезагрузке страницы все картинки всех модулей нормально загружаются и все работает.
Ситуация и на компе и на андроиде.

Вроде все в коде правильно, но почему так происходит?
*

sivers

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

Alex_gs

  • Захожу иногда
  • 161
  • 2 / 0
Все папки пути - 755
*

Alex_gs

  • Захожу иногда
  • 161
  • 2 / 0
Убрал функцию формирования тэга img - echo JsSlider::imageTag($img); Не стал в ней разбираться, т.к. в ней вызовы других функций плюс расширение класса. В-общем поленился.
Подозрения были на то, что в конце тега зачем-то стоит символ "/" слэш. Возможно он и есть проблема.

Вывел обычным способом
echo '<img src="'.$img[src].'" alt="'.$img[alt].'" title="'.$img[title].'" >';
 
Все заработало.
*

sivers

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

Alex_gs

  • Захожу иногда
  • 161
  • 2 / 0
Скорее всего вы правы. На я пожертвовал, т.к. магазин маленький, как приложение к основному сайту. Продажа атрибутики мотофестиваля. Товаров до 100 будет, скорость не важна особо. Размер фоток отредактировал CSSкой.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Работа а админке 5 минут потом выкидывает

Автор August

Ответов: 13
Просмотров: 1683
Последний ответ 06.03.2025, 10:39:54
от web1
На главную выводится кнопка добавить комментарий, как убрать?

Автор pilotgta

Ответов: 6
Просмотров: 3410
Последний ответ 21.09.2023, 15:32:35
от bugmenot
php код в новом модуле комментируется и не выводится

Автор makalex86

Ответов: 3
Просмотров: 867
Последний ответ 31.03.2023, 09:19:30
от sivers