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

klubnichkaaa

  • Захожу иногда
  • 302
  • 16 / 2
В Joomla есть модальные окна, к примеру мы заходим в статьи и там есть кнопка настройки, нажимаем появляется модальное окно с настройками. Такое сделать я знаю как, но мне нужно немного другое. В VirtueMart или hikashop есть такие же модальные окна, но отличие их работы состоит в том что все данные передаются в родительское окно, во всяком случае я так думаю.

Пример их работы, есть кнопка которая открывает модальное окно, картинки прикрепил ниже. В этом окне я могу выбрать нужный мне элемент и добавить значение этого элемента в родительское окно, к примеру в текстовое поле.

Допустим у меня есть текстовое поле, когда я открываю модальное окно я выбрал нужный мне чек бокс нажал ок окно закрылось, а значение передалось в текстовое поле.

Модальное окно вызывается разными способами, к примеру я вызываю его так, хотя можно изменить ссылку и будет открываться конкретная запись.

Код: html4strict
<a class="modal" href="index.php?option=com_priceleafshop&view=stamps&tmpl=component&object=id" rel="{handler: 'iframe', size: {x: 640, y: 480}}">
<?php echo JText::_( 'BROWSE' ); ?></a>

Полазив в поиске по классу class="modal" я нашёл всё то что я уже знаю. Но вопрос как передать значение в родительское окно я так и не понял. К тому же при переходе в модальном окне по ссылке появляется полноценная страница и как скрыть её оформление я так же не знаю. Лично я в модальном окне открываю другую страницу, хотя можно сделать fieldset, но я не знаю как тогда получить данные, родным способом Joomla.

А вся суть состоит в том что мне нужно получить список производителей с другой таблицы, а не использовать поле list с sql запросом где этих данных может быть неограниченное количество.
Делай с другими то же, что они собираются сделать с тобой: бей первым.
*

Aleks.Denezh

  • Живу я здесь
  • 3401
  • 428 / 4
Эм в чем проблема?
там где у вас выбор ставите JS функцию к примеру:
function insertData(text){
SqueezeBox.close();
alert(text);
}

в коде что отображает данные в модальном окне:
<a  href="javascript:void(0)" onclick="if (window.parent) window.parent.insertData('test data')">Тест</a>
*

klubnichkaaa

  • Захожу иногда
  • 302
  • 16 / 2
Сделал похоже как ты написал вот пример краткий

Код
//создадим функцию в модальном окне вызывать будем так 
//<input type="checkbox" id="1" onclick="col1()" value="один">
function col1() {
var $asd='Тест';
parent.showAnswer($asd);
}

В родительском окне мы вызовем функцию и выведем переменную.

Код

function showAnswer($asd) {
alert ($asd);
}


При нажатии чек бокса, выйдет всплывающее окно.

Это лишь пример. Я с помощью этого примера сделал так, что при нажатии на чек бокс, в родительское окно, конкретно в текстовое поле  записываются данные.

Но вот есть ещё вопрос. Если в модальном окне открыть ссылку, то вместо урезанного окна получается полное, как сделать его таким же как при открытии модального окна. Пример чуть выше на отках
Делай с другими то же, что они собираются сделать с тобой: бей первым.
*

Aleks.Denezh

  • Живу я здесь
  • 3401
  • 428 / 4
дописать к ссылке &tmpl=component
*

klubnichkaaa

  • Захожу иногда
  • 302
  • 16 / 2
Отлично! То что нужно! Но к примеру как быть с такими параметрами как публикация и вывод количества данных, 2 -10 - 15 - 20 и всё. Конечно можно это убрать, или сделать иначе, но может есть ответ и на этот вопрос?
Делай с другими то же, что они собираются сделать с тобой: бей первым.
*

klubnichkaaa

  • Захожу иногда
  • 302
  • 16 / 2
Разобрался как и это сделать но только фильтры и постраничная навигация с публикацией так и не понял, так же заметил что и другие расширения не имеют публикации ) Вообщем что бы страница оставалась такой же урезанной нужно просто в форму дописать &tmpl=component как и было сказано выше. К примеру
Код
<form action="<?php echo JRoute::_('index.php?option=com_priceleafshop&view=stamps&tmpl=component'); ?>" method="post" name="adminForm">
Делай с другими то же, что они собираются сделать с тобой: бей первым.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Возможность изменения параметров в админ части компонента

Автор CaHeK_pk

Ответов: 2
Просмотров: 1336
Последний ответ 12.02.2016, 02:53:16
от CaHeK_pk
Форма в публичной части компонента

Автор Зверушь

Ответов: 3
Просмотров: 1500
Последний ответ 14.01.2014, 11:38:47
от b2z
Получить значение из модального окна

Автор moskitos80

Ответов: 6
Просмотров: 3675
Последний ответ 30.11.2011, 13:42:01
от moskitos80
Вывод пользовательской части компонента на сайт

Автор Bartleby

Ответов: 11
Просмотров: 4199
Последний ответ 28.01.2011, 13:43:39
от Bartleby