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

Evgenii_web

  • Захожу иногда
  • 137
  • 1 / 1
Если я удалю в шаблоне файл maincategory.php тем самым возможно у меня не будут выводиться категории на главной странице магазина, не поломает ли это шаблон и магазин?
*

Evgenii_web

  • Захожу иногда
  • 137
  • 1 / 1
к сожалению получил ошибку 500, может кто скажет что именно вырезать в этом коде?
Спойлер
[свернуть]
*

effrit

  • Легенда
  • 10132
  • 1118 / 13
  • effrit.com
нужно не вырезать файл, а скрывать позицию component  в шаблоне, по условию на главную
как это сделать - зависит уже от шаблона.
в некоторых случаях просто задаётся отдельный лайаут для главной, в котором нет компонента, в некоторых фрймворках есть опции на отключение вывода компонента.
для простых шаблонов
Различные условия в шаблонах Joomla 3.0 и 2.5
*

Evgenii_web

  • Захожу иногда
  • 137
  • 1 / 1
в некоторых фрймворках есть опции на отключение вывода компонента.
для простых шаблонов
Различные условия в шаблонах Joomla 3.0 и 2.5
некоторых фрймворках есть опции на отключение вывода компонента.
Фреймворк сайта имеет возможность скрыть выводимую информацию, скорей всего это будет лучшим решением (взять в блок и скрыть), но я совершенно не знаю php и что нужно скрыть, поэтому опубликовал код в спойлере. В магазине есть раздел, статическая страница, которую я могу оформить как лендос и мне совершенно не нужен вывод категорий на главной с их названием и 1001 вложенностью) Я понимаю, что пора бы начать учить php и углубиться в css, но время как вода)
« Последнее редактирование: 25.01.2020, 18:07:23 от Evgenii_web »
*

effrit

  • Легенда
  • 10132
  • 1118 / 13
  • effrit.com
я писал про настройки шаблона.
это не относится к php и смотрится в настройках шаблона (расширения-шаблоны)

но раз и это сложно, то можете просто удалить код, начиная
Код
print $this->_tmp_maincategory_html_start;
и до конца. просто в шаблоне у вас может пустой блок образоваться. но пробуйте
*

Evgenii_web

  • Захожу иногда
  • 137
  • 1 / 1
я писал про настройки шаблона.
это не относится к php и смотрится в настройках шаблона (расширения-шаблоны)

но раз и это сложно, то можете просто удалить код, начиная
Код
print $this->_tmp_maincategory_html_start;
и до конца. просто в шаблоне у вас может пустой блок образоваться. но пробуйте
я писал про настройки шаблона.
это не относится к php и смотрится в настройках шаблона (расширения-шаблоны)

но раз и это сложно, то можете просто удалить код, начиная
Код
print $this->_tmp_maincategory_html_start;
и до конца. просто в шаблоне у вас может пустой блок образоваться. но пробуйте
Думаю это слишком много резать, он же еще статическую страницу выводит, сейчас эксперементом может найду)
*

Evgenii_web

  • Захожу иногда
  • 137
  • 1 / 1
в некоторых фрймворках есть опции на отключение вывода компонента.
для простых шаблонов
Различные условия в шаблонах Joomla 3.0 и 2.5
Гениальная идея, скрыл блоком (вырезал из потока документов - иначе остается пустой блок) начиная от <div class="jshop_list_category" id="comjshop"> и закрыл до <?php } ?>
   <?php print $this->_tmp_maincategory_html_end;?>
</div>
*

kit2m2

  • Живу я здесь
  • 3370
  • 276 / 0
  • Беру сайты на полное сопровождение
Не проще ли CSS-стилями скрыть блок (display: none;):

Код
<div class="jshop_list_category">
   ...
</div>

Ну или закомментировать код в шаблоне:

Код
<?php /*?>
<div class="jshop_list_category">
    <?php if (count($this->categories)) : ?>
   
        <?php foreach ($this->categories as $k => $category) : ?>
            <?php if ($k % $this->count_category_to_row == 0) : ?>
                <div class = "row-fluid">
            <?php endif; ?>
       
            <div class = "sblock<?php echo $this->count_category_to_row;?> jshop_categ category">
                <div class="sblock2 image">
                    <a href = "<?php print $category->category_link;?>">
                        <img class = "jshop_img" src = "<?php print $this->image_category_path;?>/<?php if ($category->category_image) print $category->category_image; else print $this->noimage;?>" alt="<?php print htmlspecialchars($category->name);?>" title="<?php print htmlspecialchars($category->name);?>" />
                    </a>
                </div>
                <div class="sblock2">
                    <div class="category_name">
                        <a class = "product_link" href = "<?php print $category->category_link?>">
                            <?php print $category->name?>
                        </a>
                    </div>
                    <p class = "category_short_description">
                        <?php print $category->short_description?>
                    </p>
                </div>
            </div>
           
            <?php if ($k % $this->count_category_to_row == $this->count_category_to_row - 1) : ?>
                <div class = "clearfix"></div>
                </div>
            <?php endif; ?>
        <?php endforeach;?>
       
        <?php if ($k % $this->count_category_to_row != $this->count_category_to_row - 1) : ?>
            <div class = "clearfix"></div>
            </div>
        <?php endif; ?>
       
    <?php endif; ?>
    </div>
<?php */?>
Расширения для JoomShopping | Ссылка на Телеграм-канал | Сайты и магазины под ключ: Дизайн, Верстка, Программирование (расширения на заказ), СЕО-оптимизация, Сопровождение, Перенос на Joomla 4+ (5+) и JoomShopping 5+
*

Evgenii_web

  • Захожу иногда
  • 137
  • 1 / 1
display: none;
Не проще ли CSS-стилями скрыть блок (display: none;):

Код
<div class="jshop_list_category">
   ...
</div>

Ну или закомментировать код в шаблоне:

Код
<?php /*?>
<div class="jshop_list_category">
    <?php if (count($this->categories)) : ?>
   
        <?php foreach ($this->categories as $k => $category) : ?>
            <?php if ($k % $this->count_category_to_row == 0) : ?>
                <div class = "row-fluid">
            <?php endif; ?>
       
            <div class = "sblock<?php echo $this->count_category_to_row;?> jshop_categ category">
                <div class="sblock2 image">
                    <a href = "<?php print $category->category_link;?>">
                        <img class = "jshop_img" src = "<?php print $this->image_category_path;?>/<?php if ($category->category_image) print $category->category_image; else print $this->noimage;?>" alt="<?php print htmlspecialchars($category->name);?>" title="<?php print htmlspecialchars($category->name);?>" />
                    </a>
                </div>
                <div class="sblock2">
                    <div class="category_name">
                        <a class = "product_link" href = "<?php print $category->category_link?>">
                            <?php print $category->name?>
                        </a>
                    </div>
                    <p class = "category_short_description">
                        <?php print $category->short_description?>
                    </p>
                </div>
            </div>
           
            <?php if ($k % $this->count_category_to_row == $this->count_category_to_row - 1) : ?>
                <div class = "clearfix"></div>
                </div>
            <?php endif; ?>
        <?php endforeach;?>
       
        <?php if ($k % $this->count_category_to_row != $this->count_category_to_row - 1) : ?>
            <div class = "clearfix"></div>
            </div>
        <?php endif; ?>
       
    <?php endif; ?>
    </div>
<?php */?>
Ну я в CSS не силен знаю только основы и куда копать, (когда мне он нужен то я открываю толстый справочник по css) типо так <div class="jshop_list_category" style="display: none;"> просто далекие в коде как я вас сразу не поймут))) Это вдруг кому нибудь нужно будет и фреймворка под рукой не будет , как у меня например)
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Вывод товаров из всех подкатегорий на странице категории

Автор Faina

Ответов: 355
Просмотров: 68745
Последний ответ 11.10.2025, 08:48:34
от kit2m2
[Решено] Вывод 3-х первых картинок в списке товаров категории

Автор rudoy24

Ответов: 30
Просмотров: 12408
Последний ответ 19.07.2024, 11:41:28
от juleczka
Разные шаблоны для отдельных категорий и товаров

Автор dmitry.pr

Ответов: 118
Просмотров: 37777
Последний ответ 15.12.2022, 08:57:44
от nevigen
Вырезать вывод картинок с категориями и названиями в category_default.php

Автор Evgenii_web

Ответов: 5
Просмотров: 928
Последний ответ 26.01.2020, 15:27:14
от Evgenii_web
Вывод категорий

Автор helpmeplz

Ответов: 3
Просмотров: 1081
Последний ответ 15.05.2019, 11:12:27
от helpmeplz