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

Оборонитель

  • Осваиваюсь на форуме
  • 12
  • 0 / 0
Из названия думаю все ясно)
Видел такое на нескольких сайтах, может кто-то делал так?
В идеале может есть подобный плагин, но подойдет и решение правками в коде)

Написал на случай если уже есть решение, или кто-то пробовал подобное реализовать.
*

Оборонитель

  • Осваиваюсь на форуме
  • 12
  • 0 / 0
Решил отписаться тут.
Нашел решение с помощью класса "usertype-super-administrator"
*

AndreyUA

  • Захожу иногда
  • 61
  • 7 / 0
Поясните, пожалуйста, мне не очень близкому к этой теме. Куда и каким образом в шаблоне этот класс вставить?
*

smart

  • Администратор
  • 6478
  • 1318 / 15
  • Хочешь сделать хорошо — сделай!
В связи с особенностями реализации версии JComments 2.3.0 и системой прав в Joomla 2.5, данная функция пока отключена - на текущий момент нет возможности без ущерба производительности получить информацию о доступных группах для каждого из участников обсуждения. А дергать для каждого запрос к БД - это очень не хорошо с точки зрения производительности.
*

AndreyUA

  • Захожу иногда
  • 61
  • 7 / 0
Спасибо за пояснение. Согласен с вами по поводу производительности.
*

Morfei

  • Осваиваюсь на форуме
  • 24
  • 5 / 0
Спасибо за информацию. Как всегда сработал закон подлости. Сначала искал почему перестали работать классы, не нашел, отписал, открываю эту страницу и вуаля, ответ тут.
*

switch

  • Захожу иногда
  • 128
  • 0 / 1
Ну а рамочкой нельзя никак выделить ответ супер юзера или модератора?
*

smart

  • Администратор
  • 6478
  • 1318 / 15
  • Хочешь сделать хорошо — сделай!
Можно, но если у вас на странице 20 комментариев, то будет дополнительно 20 запросов к базе данных. Вы уверены, что вам это нужно?
*

b2z

  • Глобальный модератор
  • 7287
  • 778 / 0
  • Разраблю понемногу
Можно, но если у вас на странице 20 комментариев, то будет дополнительно 20 запросов к базе данных. Вы уверены, что вам это нужно?
Но если это какие-то конкретные ID пользователей, то можно их выделить и без запросов.
*

switch

  • Захожу иногда
  • 128
  • 0 / 1
Но если это какие-то конкретные ID пользователей, то можно их выделить и без запросов.
Так устроит, "важных" пользователей будет не много!
*

switch

  • Захожу иногда
  • 128
  • 0 / 1
Или может не рамку вокруг аватара, а логин другим цветом.
*

b2z

  • Глобальный модератор
  • 7287
  • 778 / 0
  • Разраблю понемногу
Или может не рамку вокруг аватара, а логин другим цветом.
Найдите в файле /components/com_jcomments/tpl/default/tpl_comment.php строку:
Код: php
<span class="comment-author"><?php echo $comment->author?></span>

и замените на:

Код: php
<?php
$userStyle = null;
if ($comment->userid == 42):
$userStyle = ' style="color: red"';
endif;
?>
<span class="comment-author"<?php echo $userStyle; ?>><?php echo $comment->author?></span>
Таким образом для пользователя с ID=42 (это Super User по умолчанию) логин будет выделен красным. Идею, я надеюсь, Вы поняли.
*

mau

  • Новичок
  • 3
  • 0 / 0
Найдите в файле /components/com_jcomments/tpl/default/tpl_comment.php строку:
Код: php
<span class="comment-author"><?php echo $comment->author?></span>

и замените на:

Код: php
<?php
$userStyle = null;
if ($comment->userid == 42):
$userStyle = ' style="color: red"';
endif;
?>
<span class="comment-author"<?php echo $userStyle; ?>><?php echo $comment->author?></span>
Таким образом для пользователя с ID=42 (это Super User по умолчанию) логин будет выделен красным. Идею, я надеюсь, Вы поняли.

Спасибо за пост, таким образом удалось заменить цвет администратора )
только подскажите как добавить еще несколько ID с таким же цветом (к примеру 193, 194, 195)? (не силен в скриптах)
*

b2z

  • Глобальный модератор
  • 7287
  • 778 / 0
  • Разраблю понемногу
*

b2z

  • Глобальный модератор
  • 7287
  • 778 / 0
  • Разраблю понемногу
*DRINK* Спасибо!
Если очень много ID, то можно упростить код:

Код: php
$userStyle = null;
$userIds = array(42, 43, 101, 195, 231); // здесь указываем нужные ID

if (in_array($comment->userid, $userIds)):
$userStyle = ' style="color: red"';
endif;
*

Eholov

  • Захожу иногда
  • 170
  • 14 / 0
Спасибо за ответ. Так работает. Только мне надо было не только имя автора, а весь блок комента выделить. Сделал то так:
в файле tpl_comment.php строку
Код
<div class="rbox">
поменял на
Код
<div class="rbox"<?php echo $myuserStyle; ?>>
и перед ней добавил
Код
<?php
$myuserStyle = null;
if ($comment->userid == 859):
$myuserStyle = 'style="background:#ddd; padding:8px;"';
endif;
?>
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Выделить цепочку комментариев

Автор dimon7772

Ответов: 2
Просмотров: 3998
Последний ответ 25.09.2017, 16:30:40
от djumfan
Как ответить на комментарий пользователя из Админки ?

Автор Alex7

Ответов: 31
Просмотров: 18297
Последний ответ 09.06.2017, 20:12:11
от dl
Имя автора комментария ссылкой на его профил (как у Gravatar на фото)

Автор biosila

Ответов: 1
Просмотров: 4207
Последний ответ 05.06.2017, 18:12:31
от Mangust24
Рейтинг пользователя

Автор lehantrop

Ответов: 0
Просмотров: 1927
Последний ответ 25.08.2015, 22:37:26
от lehantrop
|Решено|Как внутри материала удалить надпись "Комментарии" и уменьшить "Добавить комментарий"?

Автор DeMoN75

Ответов: 4
Просмотров: 4739
Последний ответ 06.11.2014, 05:21:09
от DeMoN75