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

free_lancer

  • Захожу иногда
  • 114
  • 1 / 0
  • скоро, скоро!..
Вопрос простой - требуется для уже созданных статей (материалов) редактировать не только дату, но и время их создания - в максимально "человеко-удобном" интерфейсе.
Например, как для полей даты-времени в PHP MyAdmin (но не только лишь с его помощью).

Вопрос - КАК и ЧЕМ?
*

free_lancer

  • Захожу иногда
  • 114
  • 1 / 0
  • скоро, скоро!..
сам себе отвечу... может? еще кому пригодится, или даже кинут в FAQ :)
Сделано что называется левой пяткой на коленке, но вопрос решен.

Итак, идем на сайт проекта календаря и качаем свежую сборку:
http://www.dynarch.com/projects/calendar/ (версия 1.8 на 2010-04-11)
Разворачиваем сходные по смыслу папки и файлы из архива с календарем в папку joom-лы с.о.:
\media\system\css\img\*.*
\media\system\css\matrix\*.*
\media\system\css\border-radius.css
\media\system\css\jscal2.css
\media\system\js\ru.js
\media\system\js\jscal2.js
правим файл
\libraries\joomla\html\html\behavior.php
функция календаря должна принять вид:
Код: php
	function calendar()
{
$document =& JFactory::getDocument();
JHTML::script( 'jscal2.js', 'media/system/js/' );
        JHTML::script( 'ru.js', 'media/system/js/' );
        JHTML::stylesheet('jscal2.css', 'media/system/css/', array(' title' => JText::_( 'green' ),' media' => 'all' ));
        JHTML::stylesheet('border-radius.css', 'media/system/css/', array(' title' => JText::_( 'green' ),' media' => 'all' ));
        JHTML::stylesheet('matrix.css', 'media/system/css/matrix/', array(' title' => JText::_( 'green' ),' media' => 'all' ));
}
правим файл:
\libraries\joomla\html\html.php
для этого ищем строку $document->addScriptDeclaration и приводим соотв. код к виду:
Код: php
        $format = '%Y-%m-%d %H:%M:%S';
$document->addScriptDeclaration('window.addEvent(\'domready\', function() {Calendar.setup({
        inputField     :    "'.$id.'",     // id of the input field
        dateFormat     :    "'.$format.'",      // format of the input field
        trigger         :    "'.$id.'_img",  // trigger for the calendar (button ID)
        align          :    "Tl",           // alignment (defaults to "Bl")
        singleClick    :    true,
        showTime       :    24
    });});');
Календарь меняет минуты с интервалом в 5 (пока что устраивает, разбираться некогда), дата в поле даты устанавливается по щелчку на выбранном дне (время берется тоже), правда сам календарь не закрывается сразу, и сбрасывает в своем окне время в непонятное значение - игнорируем и жмем Esc.
*

free_lancer

  • Захожу иногда
  • 114
  • 1 / 0
  • скоро, скоро!..
всем спокойной программистской ночи  ;D
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Как отключить стандартный счетчик просмотров материалов

Автор Akksimo

Ответов: 5
Просмотров: 5284
Последний ответ 25.12.2019, 16:56:29
от nikolaevevge
Убрал в настройках материалов "Заголовок как ссылка" - "нет". И в разделе ссылки с заголовков исчезл

Автор Adrian1111

Ответов: 6
Просмотров: 3355
Последний ответ 22.03.2018, 22:17:44
от palexa
Удалить все ключевые слова из всех статей

Автор AzMandius

Ответов: 2
Просмотров: 2174
Последний ответ 16.05.2017, 00:18:51
от AzMandius
Сортировка статей по дате в 'backend'.

Автор Kumelis

Ответов: 8
Просмотров: 2841
Последний ответ 09.02.2017, 07:09:26
от jem777
Расширение - Фильтр выводимых материалов по различным параметрам.

Автор Liana

Ответов: 4
Просмотров: 3886
Последний ответ 02.11.2016, 21:51:12
от SeBun