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

zhenia_01

  • Захожу иногда
  • 158
  • 1 / 0
  • Я себя не обидел? :))
Автор: Логин вместо имени
« : 27.02.2011, 15:12:24 »
Помогите исправить код в файле templates\шаблон\html\com_content\article\default.php таким образом, чтобы в материалах выводило Автор: логин из СВ, а не имя пользователя.

Вот имеющийся код:

Код
<?php
 artxFragmentEnd(ob_get_clean());
}
artxFragmentBegin("<div class=\"art-PostHeaderIcons art-metadata-icons\">\r\n");
  if ($this->params->get('show_url') && $this->article->urls)
   artxFragment('', '<a href="http://' . $this->item->urls . '" target="_blank">' . $this->item->urls . '</a>', '', ' | ');
if ($this->params->get('show_create_date')) {
  artxFragment('', JHTML::_('image.site', 'PostDateIcon.png', null, null, null, JText::_("PostDateIcon"), array('width' => '17', 'height' => '18')). JHTML::_('date', $this->article->created, JText::_('DATE_FORMAT_LC2')), '', ' | ');
}

if (($this->params->get('show_author')) && ($this->article->author != "")) {
  artxFragment('', JHTML::_('image.site', 'PostAuthorIcon.png', null, null, null, JText::_("PostAuthorIcon"), array('width' => '14', 'height' => '14')). JText::sprintf('Written by', ($this->article->created_by_alias ? $this->article->created_by_alias : $this->article->author)), '', ' | ');
}

if (!$this->print && $this->params->get('show_pdf_icon'))
 artxFragment('', JHTML::_('icon.pdf',  $this->article, $this->params, $this->access), '', ' | ');
if (!$this->print && $this->params->get('show_print_icon' ))
 artxFragment('', JHTML::_('icon.print_popup', $this->article, $this->params, $this->access), '', ' | ');
if (!$this->print && $this->params->get('show_email_icon'))
 artxFragment('', JHTML::_('icon.email', $this->article, $this->params, $this->access), '', ' | ');
if (!$this->print && $canEdit)
 artxFragment('', JHTML::_('icon.edit', $this->article, $this->params, $this->access), '', ' | ');

if ($this->print)
 artxFragment('', JHTML::_('icon.print_screen',  $this->article, $this->params, $this->access, array('class' => 'art-metadata-icon')), '', ' | ');
artxFragmentEnd("\r\n</div>\r\n");
echo "<div class=\"art-PostContent\">\r\n";
if (!$this->params->get('show_intro'))
 echo $this->article->event->afterDisplayTitle;
echo $this->article->event->beforeDisplayContent;
if (($this->params->get('show_section') && $this->article->sectionid) || ($this->params->get('show_category') && $this->article->catid)) {
?>
я так понял, что надо править вот эту часть:
Код
if (($this->params->get('show_author')) && ($this->article->author != "")) {
  artxFragment('', JHTML::_('image.site', 'PostAuthorIcon.png', null, null, null, JText::_("PostAuthorIcon"), array('width' => '14', 'height' => '14')). JText::sprintf('Written by', ($this->article->created_by_alias ? $this->article->created_by_alias : $this->article->author)), '', ' | ');
}
Как сделать ссылку на логин из СВ?

Re: Автор: Логин вместо имени
« Ответ #1 : 28.02.2011, 10:53:12 »
А зачем тебе менять код? Когда создаешь материал, там есть поле "Параметры статьи". Пишешь в поле ("Псевдоним автора") ник, который хочешь, чтобы отображался в материалах.
*

hoock

  • Захожу иногда
  • 378
  • 42 / 0
Re: Автор: Логин вместо имени
« Ответ #2 : 28.02.2011, 11:17:51 »
Зачем лезть в код ... раз у вас CB меняйте в его настройках
В случае что помог - спасибо слишком много, пиво и + будет в самый раз *DRINK*
*

zhenia_01

  • Захожу иногда
  • 158
  • 1 / 0
  • Я себя не обидел? :))
Re: Автор: Логин вместо имени
« Ответ #3 : 28.02.2011, 14:56:26 »
а про СВ можно поподробнее, как это реализовать?
*

hoock

  • Захожу иногда
  • 378
  • 42 / 0
Re: Автор: Логин вместо имени
« Ответ #4 : 28.02.2011, 16:00:10 »
Зайдите в настройки CB и поменяйте данный параметр
В случае что помог - спасибо слишком много, пиво и + будет в самый раз *DRINK*
*

zhenia_01

  • Захожу иногда
  • 158
  • 1 / 0
  • Я себя не обидел? :))
Re: Автор: Логин вместо имени
« Ответ #5 : 28.02.2011, 21:05:06 »
Я наверное не то что-то сделал...
Вот что получаеться:
Вот этот способ:
А зачем тебе менять код? Когда создаешь материал, там есть поле "Параметры статьи". Пишешь в поле ("Псевдоним автора") ник, который хочешь, чтобы отображался в материалах.
не подходит, по двум причинам, 1 - у меня имеется возможность публикации статей авторами с фронта без подтверждения админом. Не буду же я в каждую статью потом лазить менять! 2 причина (почему так?) у меня в этом списке не логин пользователя, а его настоящее имя!

А вот так попробовал - ничего не меняеться! Только в профиле пользователя меняется!
Зайдите в настройки CB и поменяйте данный параметр

У меня тут стоит "Только имя пользователя" - это и есть логин.
Вот пример моей проблемы допустим имеется:

логин (имя пользователя): Логин
имя: Иванов И. И.

так вот как сделать что бы в статье автор был логин, а не Иванов И. И.?

[вложение удалено Администратором]
*

zhenia_01

  • Захожу иногда
  • 158
  • 1 / 0
  • Я себя не обидел? :))
Re: Автор: Логин вместо имени
« Ответ #6 : 01.03.2011, 22:14:46 »
И что, я один с такой проблемой? Help me!
*

SmokerMan

  • Гуру
  • 5290
  • 720 / 26
Re: Автор: Логин вместо имени
« Ответ #7 : 01.03.2011, 22:21:54 »
запрос нужно менять в моделях
для материала это будет components/com_content/models/article.php
Цитировать
$query = 'SELECT a.*, u.name u.username AS author, ....
и так для всех моделей.
*

zhenia_01

  • Захожу иногда
  • 158
  • 1 / 0
  • Я себя не обидел? :))
Re: Автор: Логин вместо имени
« Ответ #8 : 01.03.2011, 23:12:33 »
запрос нужно менять в моделях
для материала это будет components/com_content/models/article.phpи так для всех моделей.
во, работает! огромное спасибо! не представляешь как выручил! спасибо!
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Вопросительные знаки вместо букв

Автор Alex_iPod

Ответов: 6
Просмотров: 9214
Последний ответ 20.09.2022, 22:13:45
от PaLyCH
Вместо некоторых разделов стали отображаться пустые страницы

Автор ch

Ответов: 0
Просмотров: 1268
Последний ответ 04.12.2020, 15:07:27
от ch
Как поменять логин на имя в комментарии?

Автор albertik1994

Ответов: 3
Просмотров: 1649
Последний ответ 01.07.2020, 20:55:56
от albertik1994
Вместо звездочек выходит вот это {extravote 4}

Автор bazabaza

Ответов: 4
Просмотров: 2365
Последний ответ 12.12.2017, 14:08:34
от krot
Вместо главной страницы - содержимое файла корневого каталога index.php

Автор Igoritaly

Ответов: 2
Просмотров: 2157
Последний ответ 10.08.2017, 17:03:57
от Gosha5767