Новости 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 Ответов
  • 3639 Просмотров
*

maccamset

  • Захожу иногда
  • 74
  • 2 / 0
Делаю компонент для Joomla 1.5.24. В back end использую встроенный класс JToolBarHelper(кнопки сохранить, закрыть, новый). Проблема в том что вылетает ошибка, когда хочу использовать это-же класс в front end. это только верх айсберга?? или посыпется вся структура??
Кто юзал?? подскажите как его усмирить.
И вообще что мешает (кроме класса JToolBarHelper) использовать такой же код как в back для front end?
Допустим, если я хочу дать юзеру(без доступа в админскую часть) во front'е такой же функционал компонента как в бек, просто тот-же код не катит, так?
Я просто впервые начал делать свой компонент.
*

karabert

  • Захожу иногда
  • 276
  • 30 / 3
Цитировать
JToolbarHelper is not part of the Joomla API library. It can be understood as a helper class to simplify the creation of Toolbar titles, buttons, spacers and dividers in the Admin Interface of the Joomla Backend. You can, however, create your own Helper class for JToolBar for use in the frontend. 
(с) http://docs.joomla.org/JToolBarHelper
*

maccamset

  • Захожу иногда
  • 74
  • 2 / 0
Отлично! yes!
*

karabert

  • Захожу иногда
  • 276
  • 30 / 3
*

maccamset

  • Захожу иногда
  • 74
  • 2 / 0
Завтра на работе буду делать. Спасибо.
*

maccamset

  • Захожу иногда
  • 74
  • 2 / 0
кнопки стали видны в front end, но
дает ошибку
Parse error: syntax error, unexpected T_NEW, expecting T_STRING in X:\home\localhost\www\istest\administrator\components\com_dgrid\controller.php on line 41

это строка   в controller.php . В какой controller.php нужно добавлять это? и куда? это метод класса?
Код
function new() 
  {
  JRequest::setVar('view' , 'new');
 
  parent::display();
  }
такой код controller.php. зачем две  parent::display();??
Код
class DgridController extends JController
{
/**
* Method to display the view
*
* @access public
*/
public function display(){
parent::display();
}
function new()
  {
  JRequest::setVar('view' , 'new');
 
  parent::display();
  }

}
*

karabert

  • Захожу иногда
  • 276
  • 30 / 3
кнопки стали видны в front end, но
дает ошибку
Parse error: syntax error, unexpected T_NEW, expecting T_STRING in X:\home\localhost\www\istest\administrator\components\com_dgrid\controller.php on line 41

это строка   в controller.php . В какой controller.php нужно добавлять это? и куда? это метод класса?
Код
function new() 
  {
  JRequest::setVar('view' , 'new');
 
  parent::display();
  }
такой код controller.php. зачем две  parent::display();??
Код
class DgridController extends JController
{
/**
* Method to display the view
*
* @access public
*/
public function display(){
parent::display();
}
function new()
  {
  JRequest::setVar('view' , 'new');
 
  parent::display();
  }

}


иди учить че такое классы в php
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Как расширить функционал стандартного CCK?

Автор Snippet

Ответов: 6
Просмотров: 1347
Последний ответ 28.06.2014, 20:36:01
от Snippet
Написать функционал Joomla для общения клиента с фирмой

Автор Maak

Ответов: 0
Просмотров: 1277
Последний ответ 30.09.2013, 14:49:39
от Maak
Кнопка справка в Joomla JToolbarHelper::help

Автор klubnichkaaa

Ответов: 3
Просмотров: 2845
Последний ответ 29.10.2012, 12:22:25
от b2z