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

pavel2950

  • Захожу иногда
  • 194
  • 3 / 0
Была необходимость внести корректировки в файл com_jshopping/JS/functions.js.

Есть какой то способ сохранить его, при обновление в дальнейшим шопинга ?

Спасибо заранее
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
какие именно были корректировки, в какой функции?
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

pavel2950

  • Захожу иногда
  • 194
  • 3 / 0
Мне пришлось про дублировать
оригинал
Код
function submitListProductFilters(){
    $_('sort_count').submit();
}
Моя копия
Код
function submitListProductFiltersTwo(){
    $_('sort_count2').submit();
}

Зачем ? Единственный способ был в голове как вывести пагинацию в низу и верху сайта и чтоб работали они по отделньости.. но результат показывали  один и тот же
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
а зачем это дублировать именно в functions.js? вы можете добавить function submitListProductFiltersTwo в абсолютно любой js у вас на сайте, например в js шаблона. т.е. туда, что при обновлении не заменится. и для этого в принципе функция не нужна. вместо того, чтобы добавлять функцию, а затем ее вызывать submitListProductFiltersTwo(), напишите просто там где вызываете
Код
$_('sort_count2').submit()
и будет тоже самое. onclick, или что это у вас там.
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

pavel2950

  • Захожу иногда
  • 194
  • 3 / 0
а зачем это дублировать именно в functions.js? вы можете добавить function submitListProductFiltersTwo в абсолютно любой js у вас на сайте, например в js шаблона. т.е. туда, что при обновлении не заменится. и для этого в принципе функция не нужна. вместо того, чтобы добавлять функцию, а затем ее вызывать submitListProductFiltersTwo(), напишите просто там где вызываете
Код
$_('sort_count2').submit()
и будет тоже самое. onclick, или что это у вас там.

Спасибо, решилось все.

Как вы имели виду чтоб не указывать без создание функции,а на прямую, если я правилньо понялю

Ниже код, это полностю код который создает стандартный фильтр в списке товаров.  Не могли бы сказать как корректней было бы еще сделать ?
Спойлер
[свернуть]
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
не увидел где у вас submitListProductFiltersTwo вызывается?
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

pavel2950

  • Захожу иногда
  • 194
  • 3 / 0
не увидел где у вас submitListProductFiltersTwo вызывается?
В самом конце прописал скрипт
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
где вы ее объявили я увидел. где она вызывается?
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Пользовательский порядок товаров в админке [колонка "Сортировка"]

Автор ELLE

Ответов: 10
Просмотров: 1239
Последний ответ 30.01.2017, 14:12:22
от dmitry_stas
где находится файл уведомлений после действий

Автор buto

Ответов: 1
Просмотров: 1151
Последний ответ 18.08.2016, 17:48:34
от dmitry_stas
Отсутствует файл paymentdata.log

Автор temirlan_a

Ответов: 7
Просмотров: 1364
Последний ответ 31.07.2014, 14:06:37
от temirlan_a
Языковой файл для корзины

Автор darknefrit

Ответов: 4
Просмотров: 1190
Последний ответ 21.05.2014, 22:41:47
от victorantoniak
Ссылка на PDF файл на странице окончания заказа

Автор John_Flores

Ответов: 0
Просмотров: 1210
Последний ответ 25.04.2014, 14:45:49
от John_Flores