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

RTEagle

  • Захожу иногда
  • 140
  • 6 / 0
Пункт меню - Мой аккаунт
« : 11.03.2013, 19:36:12 »
Вопрос, конечно, может представиться не важным. Да я даже соглашусь, что это так.
Скорее всего, вы спросите меня, зачем мне это вообще. Мне внятно сложно будет объяснить, но если потребуется, попробую.
И вот я всё же спрошу.

Значит создаём новый пункт меню, тип выбираем JoomShopping Клиенты. Будет всплывающая подсказка с перечислениями registration, login, logout и т.д. Далее show и выбираем один из списка (например, user/registration).
Указав алиас для данного пункта меню, получим другой адрес url для этой страницы. В этом и есть мой success.

Почему нет специального поля для страницы мой аккаунт? Должна ли по хорошему она быть? Можно оставить show all, но так немного по другому строятся ссылки.

В общем ребят, не заморачивайтесь, проходите мимо. Но может быть кто-нибудь прокомментирует что-нибудь толковое.

Я понимаю, что такие, мелочи навряд ли волнуют разработчиков, но всё же может Виктор просматривает темы из этого раздела.
В хочучки я это писать не буду, конечно.

*

Linfuby

  • Завсегдатай
  • 1242
  • 176 / 0
  • Всё просто...
Re: Пункт меню - Мой аккаунт
« Ответ #1 : 12.03.2013, 09:06:34 »
Я бы посоветовал Вам сделать следующее:
Создать нужный пункт меню для пользователя и если Вам не нравится ссылка, зайти в базу в таблицу #__menu, найти пункт пользователя и подправить значение в path на красивую ссылку.
Я сам до конца не разобрался по какому принципу строятся эти пути, поэтому использую вышеописанный способ на рабочем сайте.
Немного воображения и логики, и любая проблема становится решенной.
Кривые решения - дают кривой результат!
Решения для JoomShopping
Благодарности и поддержка принимаются по след. реквизитам:
Яндекс.Деньги - 41001751720054
*

RTEagle

  • Захожу иногда
  • 140
  • 6 / 0
Re: Пункт меню - Мой аккаунт
« Ответ #2 : 12.03.2013, 11:36:15 »
Создать нужный пункт меню для пользователя и если Вам не нравится ссылка, зайти в базу в таблицу #__menu, найти пункт пользователя и подправить значение в path на красивую ссылку.

Вот уже не первый раз отмечаю внимательность и участие Linfuby. Спасибо. :)

очень полезный совет. Мне это пригодиться.
Но в случае со страницей "Мой аккаунт" немного не так. Прикрепляю скрин. Там в поле path значение совпадает с алиасом. То есть всё правильно.
Проблема в том, что если допустим есть пукнт JoomShopping "изменить мои данные" и я создаю алиас, то он напишет в url домен/alias.html
А вот страницы личного профиля нет и я оставляю show\all. Тогда в url домен/alias/myaccount.html

А myaccount зашито в коде и не будет переписываться. С корзиной почти такая же история. домен/korzina/view.html

Ну не беда, главное, что ссылки укоротились и стали моими.

Благодарю за новую информацию.

[вложение удалено Администратором]
*

Linfuby

  • Завсегдатай
  • 1242
  • 176 / 0
  • Всё просто...
Re: Пункт меню - Мой аккаунт
« Ответ #3 : 12.03.2013, 15:08:48 »
Странно если честно... У меня с url все нормально
Единственное что, если я не авторизован, то у меня добавляется /login. Но если навести на меню "Аккаунт", то там видно что нету дополнения "/myaccount" как это происходит у Вас.
С той же корзиной у меня "/view" добавляется только если убрать галочку в настройках "Не переходить в корзину после покупки" и нажать у товара "В корзину".
Если же заходить через пункт меню, то url просто "cart".
Немного воображения и логики, и любая проблема становится решенной.
Кривые решения - дают кривой результат!
Решения для JoomShopping
Благодарности и поддержка принимаются по след. реквизитам:
Яндекс.Деньги - 41001751720054
*

RTEagle

  • Захожу иногда
  • 140
  • 6 / 0
Re: Пункт меню - Мой аккаунт
« Ответ #4 : 12.03.2013, 16:47:07 »
Всё правильно вы говорите. Всё совпадает. У меня всё также. Да, и корзина также работает, если настройка включена. И я как раз использую эту настройку.

А ссылка с добавлением myaccount появляется если я навожу на ссылку "мой аккаунт" в модуле авторизации JoomShopping. А из меню наверно, ссылки будут правильными короткими. Просто я это меню не публикую. Да точно всё как вас будет, даже проверять не буду. Если, например, вручную путь написать короткий, то попадаем на страницу без ошибки.

Так вот в большинстве случаев при публикации пункта меню, даже в скрытом меню ссылки везде сразу принимают нужный вид. Вот например тут (Мой аккаунт из модуля авторизации) не подцепляются в точности. То, есть получается, что здесь дело в самом модуле.

*

Linfuby

  • Завсегдатай
  • 1242
  • 176 / 0
  • Всё просто...
Re: Пункт меню - Мой аккаунт
« Ответ #5 : 13.03.2013, 12:57:53 »
То, есть получается, что здесь дело в самом модуле.
Да, если в модуле в этой ссылку удалить &task=myaccount, то ссылка будет вести на функцию по умолчанию display в которой уже прописано вызывать функцию myaccount.
Поэтому можно смело удалять и оставлять только index.php?option=com_jshopping&controller=user
modules/mod_jshopping_login/tmpl/default.php
Код
<A Href = <?php Echo "\"".SEFLink('index.php?option=com_jshopping&controller=user', 1)."\""; ?>>
<?php Print JText::_('MY_ACCOUNT')?>
</A>
Немного воображения и логики, и любая проблема становится решенной.
Кривые решения - дают кривой результат!
Решения для JoomShopping
Благодарности и поддержка принимаются по след. реквизитам:
Яндекс.Деньги - 41001751720054
*

RTEagle

  • Захожу иногда
  • 140
  • 6 / 0
Re: Пункт меню - Мой аккаунт
« Ответ #6 : 13.03.2013, 22:49:26 »
Шикарно! Ну что ж, дело сделано.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться