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

RomanA

  • Захожу иногда
  • 111
  • 0 / 0
Имеем:
Joomla 3.9.25.
Пункт меню выводит материалы одной из категорий в виде блога.
Этот пункт содержит подпункты, каждый из которых имеет привязку к своему материалу этой категории.
Задача:
Нужно, чтобы была возможность пользуясь подпунктами основного меню перемещаться по блогу категории.

Возможно такая схема и не заработает. Можно создать единый материал вместо блога (по типу лэндинга) или ещё как-нибудь, но главное - чтобы была возможность пользоваться навигацией по этой странице посредством основного меню (а не вставленного через модуль непосредственно в этот длинный материал дополнительного меню или ещё как-то).
*

marksetter

  • Завсегдатай
  • 1045
  • 40 / 0
вы бы хоть или скрином или ссылкой показали что имеете и что требуетсяя так понял что типа перемещение к статьям в блоге как по якорямили не прав?
индивидуальная помощь: @SetAlexx
*

RomanA

  • Захожу иногда
  • 111
  • 0 / 0
Именно так! Через основное меню.
*

marksetter

  • Завсегдатай
  • 1045
  • 40 / 0
тут только править шаблон вывода блогаоборачивать в div с id например id материаламенюшку делать ссылками #idматериала
индивидуальная помощь: @SetAlexx
*

RomanA

  • Захожу иногда
  • 111
  • 0 / 0
Re: Навигация внутри Блога категории
« Ответ #4 : 12.04.2022, 10:48:01 »
Это который из "components\com_content\views\category\tmpl"?
Но если идти этим стандартным путём, то и шаблон вывода меню, наверное, как-то надо править? Там ведь тоже отсутствует возможность указать id для ссылки...
Если не сложно, подскажите, пожалуйста, какие конкретно правки нужны.
*

marksetter

  • Завсегдатай
  • 1045
  • 40 / 0
переопределите шаблон блога категории в свой шаблонпо меню нет никаких проблемтип - url#idматериала
индивидуальная помощь: @SetAlexx
*

RomanA

  • Захожу иногда
  • 111
  • 0 / 0
переопределите шаблон блога категории в свой шаблон
Да, это понятно, непонятно, как добавить id в этот фрагмент (не силён в РНР):

<div class="article<?php echo $item->state == 0 ? ' system-unpublished' : null; ?>"
               itemprop="blogPost" itemscope itemtype="https://schema.org/BlogPosting">
               <?php
               $this->item = & $item;
               $this->item->leading = true;
               echo $this->loadTemplate('item');
               ?>
            </div>

по меню нет никаких проблемтип - url#idматериала
Да, с этим, думаю, разберусь...
*

RomanA

  • Захожу иногда
  • 111
  • 0 / 0
Спасибо за подсказки!

<div id="<?php echo $item->id ?>" ...

... и прямые ссылки из меню типа: //http......#<нужный id>

Вроде, так работает...

А чтобы страница плавно прокручивалась до нужного якоря, в css
scroll-behavior: smooth;
« Последнее редактирование: 12.04.2022, 15:44:03 от RomanA »
*

marksetter

  • Завсегдатай
  • 1045
  • 40 / 0
именно так
индивидуальная помощь: @SetAlexx
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Стоит ли ставить плагин rel="canonical" на Joomla 3

Автор azm1n

Ответов: 2
Просмотров: 1651
Последний ответ 09.05.2025, 12:39:18
от azm1n
Перенести описание категории вниз страницы

Автор jimka

Ответов: 1
Просмотров: 1221
Последний ответ 18.07.2024, 08:02:46
от Vastriet
Сортировка по доп. полям на странице списка категории

Автор revil

Ответов: 4
Просмотров: 1672
Последний ответ 02.06.2024, 13:42:45
от tigra-uki
Поиск в Материал- Блог категории

Автор mag_num83

Ответов: 1
Просмотров: 928
Последний ответ 14.09.2023, 20:36:34
от beliyadm
reCapcha во всплывающем окне - "Ошибка защиты от спама"

Автор Dannik

Ответов: 12
Просмотров: 2641
Последний ответ 14.09.2023, 18:59:24
от all_zer