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

mohax

  • Давно я тут
  • 901
  • 66 / 3
В ходе работы возникла проблема. Как увеличить количество элементов, выводимых на странице по результатам поиска? использую свой шаблон вывода списка. Там следующая конструкция
Код
$num	=count( @$jSeblod->list );

Но она возвращает не количество найденных элементов (например 9), а количество элементов на странице, в моем случае 5. и дальше идет разбиение на страницы. На второй странице код, приведенный выше уже возвращает 4, и соответственно 4 элемента выводится.

Собственно вопросы:
1) Как мне узнать общее количество найденных элементов (т.е. 9)
2) Как увеличить количество элементов, выводимых на странице?
*

mohax

  • Давно я тут
  • 901
  • 66 / 3
В ходе работы возникла проблема. Как увеличить количество элементов, выводимых на странице по результатам поиска? использую свой шаблон вывода списка. Там следующая конструкция
Код
$num	=count( @$jSeblod->list );

Но она возвращает не количество найденных элементов (например 9), а количество элементов на странице, в моем случае 5. и дальше идет разбиение на страницы. На второй странице код, приведенный выше уже возвращает 4, и соответственно 4 элемента выводится.

Собственно вопросы:
1) Как мне узнать общее количество найденных элементов (т.е. 9)
2) Как увеличить количество элементов, выводимых на странице?

Выспался и нашел)) с настройках default action можно выставить количество результатов на странице. А по первому вопросу, убрал вывод количества найденных результатов совсем))
*

gronpipmaster

  • Захожу иногда
  • 119
  • 5 / 0
mohax, а вот это зря, когда их 2-н+ страниц нужно это для пагинации.
*

mohax

  • Давно я тут
  • 901
  • 66 / 3
mohax, а вот это зря, когда их 2-н+ страниц нужно это для пагинации.
Я в шаблоне выводил  типа найдено n документов. Как это будет влиять на пагинацию?
*

gronpipmaster

  • Захожу иногда
  • 119
  • 5 / 0
mohax, можно и так, но минусы в код лезть, или цеплять к шаблону можно параметр, вообще это в настройках действия формы поиска выставляется сколько на страницу элементов выводить, сколько показывать, вот этот $num   =count( @$jSeblod->list ); и берёт эти параметры, в принципе если статично удобно поставить число можно так и оставить, меньше запросов к бп, тем более подщёт, хотя может и вторую страницу не показать, он же считает кол-во элементов подходящих под этот диапозон.
*

mohax

  • Давно я тут
  • 901
  • 66 / 3
mohax, можно и так, но минусы в код лезть, или цеплять к шаблону можно параметр, вообще это в настройках действия формы поиска выставляется сколько на страницу элементов выводить, сколько показывать, вот этот $num   =count( @$jSeblod->list ); и берёт эти параметры, в принципе если статично удобно поставить число можно так и оставить, меньше запросов к бп, тем более подщёт, хотя может и вторую страницу не показать, он же считает кол-во элементов подходящих под этот диапозон.
По-моему мы друг друга не совсем понимаем. Эту строку $num   =count( @$jSeblod->list ); я в коде оставил. Просто я еще над результатами выводил, что найдено $num элементов. А там же содержится количество айтемов на странице, а не реальный результат поиска (сумма по всем страницам). Пока не разбирался как получить и вывести реальный результат поиска (это не критично). А так все, что пока запланировал получилось. Спасибо за подсказки и помощь.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Фильтры поиска не работают

Автор composerr

Ответов: 8
Просмотров: 4888
Последний ответ 28.07.2016, 22:09:20
от composerr
cтандартный модуль поиска Joomla

Автор ivan.sergeev

Ответов: 1
Просмотров: 4287
Последний ответ 26.03.2016, 14:07:33
от KKAAZZOO
Не вывод поле Filed X и количество значений?

Автор warlocksp

Ответов: 1
Просмотров: 4651
Последний ответ 25.08.2015, 14:59:07
от warlocksp
Проблема с Типом поиска?

Автор andrepon

Ответов: 1
Просмотров: 1941
Последний ответ 02.12.2012, 02:56:50
от zeroif
Не выводятся результаты поиска

Автор hawk1

Ответов: 5
Просмотров: 3377
Последний ответ 31.07.2012, 17:48:30
от Posokhoff