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

orsy

  • Захожу иногда
  • 400
  • 23 / 1
  • Web-Factor Ukraine
Re: Порядок загрузки скриптов
« Ответ #30 : 06.10.2015, 14:39:59 »
Столкнулся с проблемой порядка загрузки скриптов в 3.4.1

Проблему решил следующим образом:

1. JHtml::_('jquery.framework');
2. $document->addScript(JURI::base().'components'.DS.'com_componentname'.DS.'assets'.DS.'js'.DS.'jquery.jqGrid.js');

Строчка №1 решила проблему, теперь jquery грузится первым

создавал модуль в котором нужно подключать плагины jQuery. Модуль нормально работал если его на вставить в материал плагином. Как только модуль оказывался в материале, плагины jQury подключались до джумловских, а так как они уже оказывались подключенными еще до включения джумловского jquery то после его подключения они уже не подключались.

И вот описанный в цитате способ реально решает, теперь все пашет как надо ) СПАСИБО!
*

Serebro2009

  • Захожу иногда
  • 135
  • 0 / 0
Re: Порядок загрузки скриптов
« Ответ #31 : 18.10.2015, 23:38:11 »
Такая же ситуация, модуль вставленный в материалы - не пашет...из-за того, что JQ подключается позже. Куда нужно прописать строчку?:
1. JHtml::_('jquery.framework');
*

Serebro2009

  • Захожу иногда
  • 135
  • 0 / 0
Re: Порядок загрузки скриптов
« Ответ #32 : 18.10.2015, 23:51:34 »
 -  JHtml::_('jquery.framework'); Добавлен...проблема не решена

Как быть? Почему такая ситуация?
*

orsy

  • Захожу иногда
  • 400
  • 23 / 1
  • Web-Factor Ukraine
Re: Порядок загрузки скриптов
« Ответ #33 : 19.10.2015, 14:12:28 »
у меня файл шаблона вывода модуля начинается вот так:

Код
<?php defined('_JEXEC') or die;

$document = JFactory::getDocument();

JHTML::stylesheet('modules/' . $module->module . '/style/'.$colorcat.'/style.css'); //подключение стилей
JHtml::_('jquery.framework'); //заветная решающая строка

$document->addScript("https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"); //подключение библиотек
...
*

Roinmana

  • Захожу иногда
  • 108
  • 2 / 0
Re: Порядок загрузки скриптов
« Ответ #34 : 03.03.2016, 22:07:13 »
Код
<?php JHtml::_('jquery.framework'); 
Проблема в том, что куда не вставлю эту строку, скрипты загружаются в head. Как заставить их грузиться именно в место где вставлена строка? Например, если я добавлю этот код в шаблон футера, то там они должны и появиться, а не в head.
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
Re: Порядок загрузки скриптов
« Ответ #35 : 04.03.2016, 01:03:39 »
А зачем грузить библиотеки в body (тем более в футер)? Вы понимаете, что остальные скрипты что их используют будут вызывать ошибки. Одна такая ошибка и все остальные ваши скрипты на странице окажутся нерабочими. Мне бы захотелось руки оторвать человеку который запихнул jquery в футер, если бы столкнулся с подобной проблемой.
« Последнее редактирование: 04.03.2016, 01:26:14 от zomby6888 »
интернет-блог: http://websiteprog.ru
*

Roinmana

  • Захожу иногда
  • 108
  • 2 / 0
Re: Порядок загрузки скриптов
« Ответ #36 : 04.03.2016, 08:39:04 »
А зачем грузить библиотеки в body (тем более в футер)? Вы понимаете, что остальные скрипты что их используют будут вызывать ошибки. Одна такая ошибка и все остальные ваши скрипты на странице окажутся нерабочими. Мне бы захотелось руки оторвать человеку который запихнул jquery в футер, если бы столкнулся с подобной проблемой.
Это понятно, но на конкретном сайте нужных "верхних" скрипта всего два, их грузят компоненты подписки и комментариев и один из них прекрасно загружается асинхронно. Остальным (украшательства и доп. функционал код которого прописан в самом конце) в head делать нечего, только тормозят загрузку страницы, поэтому возникла такая необходимость. Как это реализовать?
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
Re: Порядок загрузки скриптов
« Ответ #37 : 04.03.2016, 09:35:03 »
Сжатый jquery, который грузится в head практически не тормозит загрузку страницы. Если хотите оптимизировать скорость загрузки страницы то стоило бы на другие вещи внимание обратить. Тем не менее, если вы такой маньяк то пишите плагин или возьмите какой нибудь готовый, который уберет все скрипты из head. А те скрипты что хотите в футер воткнуть подключайте вручную.  Фореймворк Joomla грузит скрипты только в head. Ну и имейте ввиду что если кому то после всех этих ваших действий понадобится кастомизировать этот сайт, добавить скриптик там какой нибудь то он будет вам очень благодарен за вашу находчивость ;D
« Последнее редактирование: 04.03.2016, 09:42:46 от zomby6888 »
интернет-блог: http://websiteprog.ru
*

LadaDed

  • Осваиваюсь на форуме
  • 13
  • 0 / 0
Re: Порядок загрузки скриптов
« Ответ #38 : 03.12.2016, 08:17:34 »
Да, вот тоже оказалась та-же ситуация.. Думал, что все скрипты прописаны где-то в базе данных, и там просто можно поменять их очередность или вообще добавить-удалить. Но не нашел в какой таблице..
Приходится вызов своего js писать просто руками в index.php чтобы он вызывался после вызова jQuery
*

rsn

  • Давно я тут
  • 520
  • 34 / 3
Re: Порядок загрузки скриптов
« Ответ #39 : 01.09.2017, 12:06:02 »
Проблему решил следующим образом:

1. JHtml::_('jquery.framework');
2. $document->addScript(JURI::base().'components'.DS.'com_componentname'.DS.'assets'.DS.'js'.DS.'jquery.jqGrid.js');

Строчка №1 решила проблему, теперь jquery грузится первым

Спасибо за наводку, jitendra. Вопрос и для меня решён.
Немного переоформил для тех случаев, когда $document не определена:

Код
JHtml::_('jquery.framework'); // Это чтобы сначала шёл сам jQuery
JFactory::getDocument()->addScript(JUri::base().'test/jquery.cookie.js');

То есть просто перед тем, как вставлять свой скрипт с помощью API, добавляем выше JHtml::_('jquery.framework');
Протестировал на Joomla 3.7.5. Всё отлично.
Порядок для самой jQuery не поменялся. А вот добавленный мной скрипт jquery.cookie.js теперь стал ниже. Причём не сразу после библиотеки jQuery, а ниже noconflict и migrate.
Возможно, будет интересно: Интеграция с Ozon
*

Flexderection

  • Новичок
  • 3
  • 0 / 0
Re: Порядок загрузки скриптов
« Ответ #40 : 08.03.2021, 22:16:54 »
А почему в head а не в footer.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Медиа-менеджер. Размер данного файла слишком велик для загрузки

Автор Veteran

Ответов: 6
Просмотров: 3130
Последний ответ 16.07.2018, 17:22:46
от darya322
Как сделать порядок мета тегов?

Автор Meiir

Ответов: 4
Просмотров: 1804
Последний ответ 11.05.2017, 17:52:33
от vipiusss
Порядок плагинов на странице

Автор intcorp

Ответов: 5
Просмотров: 2095
Последний ответ 26.04.2017, 23:51:10
от UN_Tony
После загрузки на хостинг появилась проблема описанная ниже!

Автор pomogu_chem_smogu

Ответов: 6
Просмотров: 2435
Последний ответ 16.02.2017, 16:29:34
от SeBun
Скорость загрузки сайта

Автор sanni55

Ответов: 4
Просмотров: 1191
Последний ответ 06.02.2017, 17:07:13
от sanni55