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

Rojas

  • Осваиваюсь на форуме
  • 40
  • 10 / 0
Кнопка "применить"
« : 06.04.2012, 10:51:52 »
Добрый день!
Пишу компонент для Joomla 1.7
Застрял на вопросе, как сделать кнопку "применить" в админке при создании нового материала?
Функция JToolBarHelper::apply() делает запрос к модели на сохранение материала, а затем редиректит на страницу редактирования этого же материала, но это работает только при именно редактировании материала, т.к. при создании ему id (cid) еще не назначен, соответственно, не понятно куда редиректить.. Как это победить?
Код такой:
В контроллере:
Код
function editgalleries(){
$cid = JRequest::getVar( 'cid' );
if(intval($cid[0]) == 0) $text = 'Создание';
else $text = 'Редактирование';
JToolBarHelper::title( $text );
JToolBarHelper::apply( 'applygalleries' );
JToolBarHelper::save( 'savegalleries' );
JToolBarHelper::cancel( 'canselgalleries' );
JRequest::setVar( 'layout', 'edit' );
parent::display( );
}

.......

function applygalleries(){
            $id = JRequest::getVar('id');
$model = $this->getModel( 'galleries' );
$result = $model->save( );
$this->setRedirect( 'index.php?option=com_galleries&task=editgalleries&view=galleries&cid[]='.$id , $result);
}
Не могу понять как это реализовано в других компонентах. >
:(
*

Rojas

  • Осваиваюсь на форуме
  • 40
  • 10 / 0
Re: Кнопка "применить"
« Ответ #1 : 19.04.2012, 13:59:11 »
 ^-^ видно мудрено объяснил..
Упрощу - как при сабмите формы в админке остаться на той же странице?
*

Rojas

  • Осваиваюсь на форуме
  • 40
  • 10 / 0
Re: Кнопка "применить"
« Ответ #2 : 19.04.2012, 14:41:57 »
Ладно, пришлось сделать через javascript:history.back();
лучше пока не придумал )
*

lottis

  • Захожу иногда
  • 181
  • 11 / 0
Re: Кнопка "применить"
« Ответ #3 : 21.04.2012, 18:45:41 »
Просто попробуйте сделать редирект:

$this->setRedirect("index.php?option=com_calculate&view=catalog&task=get_city");

Я делаю вот так в контроллере:
Цитировать
function get_city(){
        //получение объекта модели (город)
        $model = $this->getModel("calculate");
        //выполнение какой-то ф-ции отправки данных
        $model->get_city();
        //die();
              //переход на вид calculate
      //  $this->setRedirect("index.php?option=com_calculate&view=catalog&task=get_city");
       
    }
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Подключение js файла и кнопка прикреления

Автор __noob__

Ответов: 6
Просмотров: 1841
Последний ответ 20.05.2014, 00:24:40
от Fedor Vlasenko
Кнопка "Я ИДУ" в компоненте EventList

Автор kichik

Ответов: 5
Просмотров: 2627
Последний ответ 30.05.2013, 12:53:24
от dagolovach
Кнопка справка в Joomla JToolbarHelper::help

Автор klubnichkaaa

Ответов: 3
Просмотров: 2847
Последний ответ 29.10.2012, 12:22:25
от b2z
Кнопка "Сохранить"

Автор fallout9000

Ответов: 2
Просмотров: 2621
Последний ответ 23.08.2012, 10:36:10
от fallout9000