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

Stasweb

  • Завсегдатай
  • 1501
  • 24 / 0
Перестал работать менеджер перенаправлений при непонятных причинах работал нормально и тут раз и все не перенаправлят ссылки.
В $live_site все прописано. Если делать редирект через htaccess все срабатывает нормально. Хостирам написал по поводу mod_rewrite чтоб проверили они так-же говорят что все нормально все работает. Подскажите что можно предпринять или что могло нарушится в работе менеджера что он перестал работать.
*

orsy

  • Захожу иногда
  • 400
  • 23 / 1
  • Web-Factor Ukraine
Включите режим отображения ошибок на максимум и посмотрите что выдает.
*

Stasweb

  • Завсегдатай
  • 1501
  • 24 / 0
Так в том то и дело что $error_reporting = 'development'; на максимум и ошибок нет.
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
Может вы просто плагин отключили?
*

Stasweb

  • Завсегдатай
  • 1501
  • 24 / 0
Нет плагин (Система - Перенаправление) включен так же в нем Сохранять ссылки тоже включено.
Да и если плагин был бы отключен то в менеджере писал бы что плагин отключен.
*

Stasweb

  • Завсегдатай
  • 1501
  • 24 / 0
Вот на всякий случай мой /plugins/system/redirect/redirect.php
Спойлер
[свернуть]
В нем нашел такую строчку
Цитировать
if ((strpos($current, 'mosConfig_')!== false) || (strpos($current, '=http://')!== false))
Попробовал прописать так
Код
if ((strpos($current, 'mosConfig_')!== false) || (strpos($current, '=http://', '=https://')!== false))
Так как сайт работает по протоколу https но это недало результата.
Вообще может влиять протокол на перенапровление url
*

Stasweb

  • Завсегдатай
  • 1501
  • 24 / 0
Попробовал установить JRedirect и отключить стандартный плагин но это так же не дало результата.
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
strpos() принимает третьим аргументом офсет (сдвиг поиска от начала строки) http://php.net/manual/ru/function.strpos.php Если вы хотите сравнить с двумя строками, то вам надо не добавлять вторую строку в вызов функции, а сделать два условия.
Код
if (strpos($current, 'mosConfig_')!== false || (strpos($current, '=http://')!== false && strpos($current, '=https://')!== false ))
*

Stasweb

  • Завсегдатай
  • 1501
  • 24 / 0
Этот вариант также привел к нулевому результату
Код
//	if ((strpos($current, 'mosConfig_')!== false) || (strpos($current, '=http://')!== false))
if (strpos($current, 'mosConfig_')!== false || (strpos($current, '=http://')!== false && strpos($current, '=https://')!== false ))
Может есть что то сторонние кроме JRedirect подскажите.
*

Arkadiy

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

Сайт перестал нормально грузиться

Автор Leo1986

Ответов: 17
Просмотров: 2113
Последний ответ 11.06.2025, 13:55:08
от zilonitiz
Не работает менеджер материалов, ошибка 500 SSL certificate problem

Автор Екатерина М

Ответов: 5
Просмотров: 1963
Последний ответ 06.04.2025, 09:27:20
от wishlight
Перестала работать почта на всех сайтах

Автор svarg

Ответов: 5
Просмотров: 1267
Последний ответ 23.02.2024, 22:05:51
от Vastriet
[Решено] Перестали работать переходы по меню сайта

Автор AlexP750

Ответов: 12
Просмотров: 2158
Последний ответ 06.02.2024, 12:42:26
от AlexP750
Медиа менеджер стандартный

Автор phvsfpgs

Ответов: 0
Просмотров: 627
Последний ответ 11.09.2023, 15:55:40
от phvsfpgs