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

PrizmaOO

  • Осваиваюсь на форуме
  • 42
  • 0 / 0
Хочу в страничку материалов вставить скрипт php что бы он в зависимости от браузера показывал ту или иную информацию для кросс-браузерности, но не совсем понимаю куда его вставить что бы он работал
у Меня есть пункт меню
при клике на который хочу что бы показывалась та или иная страничка
поидее есть 2 ссылки на материал с HTML кодом которые надо впихнуть в шаблон учитывая браузер

1. если я добавлю php в тело материала он будет работать?
2. может надо добавить php в код это пункта меню? там же наверняка Joomla инклюдает материал с помощью того же php? вот будет инклюдать с условием
3. или стоит просто сделать страничку залить её на сайт и дать ссылку на неё пункту меню (естественно добавив туда весь шаблон)

подскажите как будет проще?
*

danik.html

  • Живу я здесь
  • 2650
  • 353 / 4
Что еще за информация для кроссбраузерности?
1. если я добавлю php в тело материала он будет работать?
2. может надо добавить php в код это пункта меню? там же наверняка Joomla инклюдает материал с помощью того же php? вот будет инклюдать с условием
3. или стоит просто сделать страничку залить её на сайт и дать ссылку на неё пункту меню (естественно добавив туда весь шаблон)

подскажите как будет проще?
Нет, код, вставленный в материал, не будет работать. А почему он должен работать? Содержимое материала на лету подставляется в шаблон и выводится в браузер
Joomlа материалы не инклюдит. Она сохраняет их в базу данных и при генерации страницы вытягивает их оттуда, я уже писал.
Проще будет сделать одну страницу, не делая различий для браузеров. Не понимаю почему должно быть иначе (на ум приходит только заглушка на определенный браузер, если он не поддерживает нужные функции, например, canvas или svg в IE8, WebSockets и тд..)
【Мегапак Virtuemart:
 • метатеги (description,keywords)
 • заголовки (title)
 • красивые алиасы (чпу) без тормозов и дублей!
*

PrizmaOO

  • Осваиваюсь на форуме
  • 42
  • 0 / 0
собственно говоря проблема вот в чем Яндекс карта имеет функцию повесить на карте ярлычок, так вот в некоторых браузерах (сафари, хром, возможно опера) этот ярлычок отсутствует, для таких браузеров я создал отдельную страничку. тогда думаю что проще будет 3-ий вариант
*

SDKiller

  • Живу я здесь
  • 2705
  • 329 / 5
  • ...ergo sum
Зачем для Яндекс-карт делать что-то на php, если у них яваскрипт-API ?
На том же яваскрипт можете определить браузер и от этого плясать, передавая параметры в карту.
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
Код: php-brief
<?php
if (JMenuSite::getInstance('site')->getActive()->id == 123) {
//проверяем меню с id = 123
$doc =& JFactory::getDocument();
$browser = &JBrowser::getInstance();
$browserType = $browser->getBrowser();
// echo $browserType;
// имя браузера
$browserVersion = $browser->getMajor();
// echo $$browserVersion;
// версия браузера
if(($browserType == 'msie') && ($browserVersion < 8))
{
   JApplication::redirect ('index.php?option=com_content&view=article&id=1');
   //редирект на страницу материала с id = 1
}
elseif ($browserType == 'mozilla')
{
   JApplication::redirect ('index.php?option=com_content&view=article&id=2');
   //редирект на страницу материала с id = 2
}
elseif ($browserType == 'opera')
{
 JApplication::redirect ('index.php?option=com_content&view=article&id=3');
 //редирект на страницу материала с id = 3
}
}
?>
Вывод страницы по умолчанию
Вставляем в шаблон сайта
*

PrizmaOO

  • Осваиваюсь на форуме
  • 42
  • 0 / 0
Зачем для Яндекс-карт делать что-то на php, если у них яваскрипт-API ?
На том же яваскрипт можете определить браузер и от этого плясать, передавая параметры в карту.
не владею яваскриптом в нужной мере

Код: php-brief
<?php
if (JMenuSite::getInstance('site')->getActive()->id == 123) {
//проверяем меню с id = 123
$doc =& JFactory::getDocument();
$browser = &JBrowser::getInstance();
$browserType = $browser->getBrowser();
// echo $browserType;
// имя браузера
$browserVersion = $browser->getMajor();
// echo $$browserVersion;
// версия браузера
if(($browserType == 'msie') && ($browserVersion < 8))
{
   JApplication::redirect ('index.php?option=com_content&view=article&id=1');
   //редирект на страницу материала с id = 1
}
elseif ($browserType == 'mozilla')
{
   JApplication::redirect ('index.php?option=com_content&view=article&id=2');
   //редирект на страницу материала с id = 2
}
elseif ($browserType == 'opera')
{
 JApplication::redirect ('index.php?option=com_content&view=article&id=3');
 //редирект на страницу материала с id = 3
}
}
?>
Вывод страницы по умолчанию
Вставляем в шаблон сайта
вечером обязательно код разберу
*

PrizmaOO

  • Осваиваюсь на форуме
  • 42
  • 0 / 0
та часть куда вставляется материал в шаблоне вот так выглядит
Код
<jdoc:include type="message" />
<jdoc:include type="component" />
где искать их исходники в Joomla? это какие то стандартные команды вызова котента?
*

PrizmaOO

  • Осваиваюсь на форуме
  • 42
  • 0 / 0
та часть куда вставляется материал в шаблоне вот так выглядит
Код
<jdoc:include type="message" />
<jdoc:include type="component" />
где искать их исходники в Joomla? это какие то стандартные команды вызова котента?
вопрос открыт(
код дали спасибо, только не совсем понимаю куда мне его вставить, потому что тот документ куда его вставить нужно вставляется командо jdoc а яне силён в структуре joomla( тут только тип указан без name но именно в этой части шаблона высвечиваются материалы
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
PrizmaOO код вставлять в шаблон желательно в самое начало
<jdoc:include type="message" /> - выводит системные сообщения
<jdoc:include type="component" /> - осуществляет вывод компонентов
трогать вам их не зачем
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться