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

SalityGEN

  • Захожу иногда
  • 209
  • 7 / 1
  • Делаю мир лучше
Доброго времени суток, вопрос такой, хочу расширить функционал компонента com_content
С помощью модификации XML фида шаблона вывода настроек категории.
Задача в следующем, нужно как то динамично подставлять ID текущей категории в XML

Код
<field
    name="title"
    type="sql"
    default=""
    label="Select"
    query="SELECT id AS value, title AS text FROM #__category WHERE id=ТУТ_ID_ТЕКУЩЕЙ КАТЕГОРИИ"
    />

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

SalityGEN

  • Захожу иногда
  • 209
  • 7 / 1
  • Делаю мир лучше
привет.
думаю, что правильнее будет создать свой тип кастомного поля и там уже делай, что хочешь.


Привет, Категорий много будет, там понятное дело, уже для каждой свое заряженное поле с заготовленным запросом, просто выглядеть это будет в админке, в разделе полей, как огромный список с одинаковыми названиями.
Я уже думал может заюзать языковые константы там есть что то типа %s %a %b переменные, но их же надо где то задать... я подозреваю что придется в ядро лезть, ну или во всяком случае обновляться будет проблематично после такого..

А так, да, пока использую кастомные поля, и ориентироваться в них стало сложно. вот думаю над оптимизацией
*

sivers

  • Живу я здесь
  • 2596
  • 360 / 0
А так, да, пока использую кастомные поля, и ориентироваться в них стало сложно. вот думаю над оптимизацией
Речь не о кастомных полях, а о новом типе поля. Которое будет учитывать все ваши хотелки и читать ИД категории из параметров запроса.
https://docs.joomla.org/Creating_a_custom_form_field_type
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

SalityGEN

  • Захожу иногда
  • 209
  • 7 / 1
  • Делаю мир лучше
Речь не о кастомных полях, а о новом типе поля. Которое будет учитывать все ваши хотелки и читать ИД категории из параметров запроса.
https://docs.joomla.org/Creating_a_custom_form_field_type
А, вот оно что )) я не так понял, вот, уже более норм вариант тогда.
Я тут еще доку изучил, я правда сонный но кажется надо попробовать еще вот это:

Код
<field name="subgroups"
    type="sql"
    label="COM_EXAMPLE_SUBGROUPS"
    sql_select="e.*"
    sql_from="#__example_subgroups AS e"
    sql_group="name"
    sql_order="e.id ASC"
    sql_filter="groups,categories"
    key_field="id"
    value_field="name"
    />

А именно

Код
sql_filter="groups,categories"

как написано в доке: "Это создаст выборку типа WHERE `groups` = 99 AND `categories` = 12"
что как бы намекает на то, что id оно подставит автоматически.
буду пробовать, если не выйдет тогда вариант создание нового поля будет кстати.

это от сюда https://docs.joomla.org/SQL_form_field_type
*

sivers

  • Живу я здесь
  • 2596
  • 360 / 0
А именно

Код

sql_filter="groups,categories"


как написано в доке: "Это создаст выборку типа WHERE `groups` = 99 AND `categories` = 12"
что как бы намекает на то, что id оно подставит автоматически.

Очень интересно! Отпишитесь, пожалуйста, по результатам.
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

SalityGEN

  • Захожу иногда
  • 209
  • 7 / 1
  • Делаю мир лучше
Очень интересно! Отпишитесь, пожалуйста, по результатам.
Ок, обязательно отпишусь, сейчас немного другим занят
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Можно ли создавать кастомные позиции типа "beforeDisplayTitle"?

Автор denxio

Ответов: 0
Просмотров: 1834
Последний ответ 12.01.2024, 06:39:17
от denxio
Применить свой css-файл в дочернем шаблоне Joomla 4

Автор Dolphin4ik_1

Ответов: 2
Просмотров: 1058
Последний ответ 01.06.2022, 21:41:27
от marksetter
Вывод хитов в одном из макетов компонента com_tags в Joomla4

Автор Bake

Ответов: 1
Просмотров: 1097
Последний ответ 14.02.2022, 10:15:45
от Bake