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

sett

  • Захожу иногда
  • 54
  • 0 / 0
Элементарный код для меню. Хочу слева от каждого пункта меню поставить маркер. Прописываю "list-style: circle;" - маркеры не появляются... посмотрите пожалуйста код, что не так прописано?  :(

a.mainlevel {
  margin-top        : 1px;
  padding-top       : 0px;
  font-size         : 12px;
  width             : 180px;
  text-indent       : 10px;
}
a.mainlevel:link {
  padding           : 0px 0px 0px 0px;
  font-size         : 12px;
  width             : 180px;
  text-indent       : 10px;
}
a.mainlevel:link, a.mainlevel:visited {
  font-size         : 12px;
  font-weight       : normal;
  padding           : 2px 60px 2px 0px;
  color             : #FFFFFF;
  width             : 180px;
  text-indent       : 10px;
  text-decoration   : none;
  list-style          : circle;
}

a.mainlevel:hover {
  font-size         : 12px; 
  color             : #FFFFFF;
  font-weight       : normal;
  text-decoration   : underline;
  text-indent       : 10px;
  list-style          : circle;
}
*

SmokerMan

  • Гуру
  • 5290
  • 720 / 26
А зачем это прописывать для ссылки?
list-style вообще для тэга <a> не применим.
Пиши для li
*

sett

  • Захожу иногда
  • 54
  • 0 / 0
блин, ни как не могу разобраться с этим тегом... подскажи код пожалуйста, который добавить следует  >:(
*

SmokerMan

  • Гуру
  • 5290
  • 720 / 26
блин, ни как не могу разобраться с этим тегом... подскажи код пожалуйста, который добавить следует  >:(
с каким тегом? :)
все давно уже написано.
Ставьте в настройках модуля меню отображение - обычным списком. И читайте литературу по HTML и CSS.
*

sett

  • Захожу иногда
  • 54
  • 0 / 0
спасибо огроменное)
*

sett

  • Захожу иногда
  • 54
  • 0 / 0
и последний вопрос)))
если у меня два списка на одной странице? для обоих разные стили должны быть, первый #mainlevel, а как для второго собственные сделать?
*

SmokerMan

  • Гуру
  • 5290
  • 720 / 26
и последний вопрос)))
если у меня два списка на одной странице? для обоих разные стили должны быть, первый #mainlevel, а как для второго собственные сделать?
смотрите класс или id родительского элемента.
Пример
Код: html
<style>
#first ul li {
list-style:disc;
}
#second ul li {
list-style:circle;
}
</style>
<div id ="first">
<ul><li>
</ul></li>
</div>
<div id ="second">
<ul><li>
</ul></li>
</div>
*

sett

  • Захожу иногда
  • 54
  • 0 / 0
и еще раз спасибо)
*

sett

  • Захожу иногда
  • 54
  • 0 / 0
Все-таки всплыла еще одна проблема... Отображение созданного меню в опере и мазиле - отличное, в эксплорере - как-будто стили для меню не работают вообще!  :'(

Код
#menu1 a.mainlevel {
  margin-top        : 1px;
  padding-top       : 0px;
  font-size         : 12px;
  width             : 180px;
  text-indent       : 10px;
}
#menu1 a.mainlevel:link {
  padding           : 0px 0px 0px 0px;
  font-size         : 12px;
  width             : 180px;
  text-indent       : 10px;
}
#menu1 a.mainlevel:link, #menu1 a.mainlevel:visited {
  font-family       : Arial, Helvetica, sans-serif;
  font-size         : 12px;
  font-weight       : normal;
  padding           : 0px 50px 2px 0px;
  color             : #FFFFFF;
  width             : 180px;
  text-indent       : 10px;
  text-decoration   : none;
}

#menu1 a.mainlevel:hover {
  font-size         : 12px; 
  color             : #FFFFFF;
  font-weight       : normal;
  text-decoration   : underline;
  text-indent       : 10px;
}

#menu1 li {
  list-style-type: none;
  display: inline;
  }
 #menu1 li:before {
  content: url(../image/menu_point.png);
 }
 
#menu2 a.mainlevel {
  margin-top        : 1px;
  padding-top       : 0px;
  font-size         : 12px;
  width             : 180px;
  text-indent       : 10px;
}
#menu2 a.mainlevel:link {
  padding           : 0px 0px 0px 0px;
  font-size         : 12px;
  width             : 180px;
  text-indent       : 10px;
}
#menu2 a.mainlevel:link, #menu2 a.mainlevel:visited {
  font-family       : Arial, Helvetica, sans-serif;
  font-size         : 11px;
  font-weight       : normal;
  padding           : 0px 5px 0px 0px;
  color             : #6b6b6b;
  width             : 180px;
  text-indent       : 10px;
  text-decoration   : none;
}

#menu2 a.mainlevel:hover {
  font-size         : 11px; 
  color             : #6b6b6b;
  font-weight       : normal;
  text-decoration   : underline;
  text-indent       : 10px;
}

#menu2 li {
  list-style-type: none;
  display: inline;
  }
 #menu2 li:before {
  content:  "| ";
 }



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

sett

  • Захожу иногда
  • 54
  • 0 / 0
и вот еще код...
Код
<td><div align="center" id ="menu1">
            <?php if($this->countModules('left')) : ?>
            <jdoc:include type="modules" name="left" style="" />
              <?php endif; ?>
          </div></td>

<td><div align="left" id ="menu2">
            <jdoc:include type="modules" name="user6" style="" />
          </div></td>

и все что padding-top, left, right - ни чего не действует в эксполорере... поплыл шаблон в нем(((
*

sett

  • Захожу иногда
  • 54
  • 0 / 0
ууффф, решил задачу) всем спасибо
*

kolka88

  • Осваиваюсь на форуме
  • 26
  • 0 / 0
ууффф, решил задачу) всем спасибо
Как решил если не секрет?
*

sett

  • Захожу иногда
  • 54
  • 0 / 0
Конечно не секрет)))

Назначил id для каждого модуля меню в index.php:

Код
<td id="mainmenu_middle"><div id ="menu1">
            <jdoc:include type="modules" name="left" style="" />
              <?php if($this->countModules('left')) : ?>
              <?php endif; ?>
          </div></td>

и

Код
<td id="dop_menu"><div id ="menu2">
            <jdoc:include type="modules" name="user4" style="" />
              <?php if($this->countModules('user4')) : ?>
              <?php endif; ?>
          </div></td>

в CSS прописал стили:

Код
#menu1 a.mainlevel {
  margin-top        : 1px;
  padding-top       : 0px;
  font-size         : 12px;
  width             : 180px;
  text-indent       : 10px;
  background-image: url(../image/menu_point.png);
  background-repeat:no-repeat;
  background-position:center left;
}
#menu1 a.mainlevel:link {
  padding           : 0px 0px 0px 0px;
  font-size         : 12px;
  width             : 180px;
  text-indent       : 10px;
}
#menu1 a.mainlevel:link, #menu1 a.mainlevel:visited {
  font-family       : Arial, Helvetica, sans-serif;
  font-size         : 12px;
  font-weight       : normal;
  padding           : 0px 50px 2px 0px;
  color             : #FFFFFF;
  width             : 180px;
  text-indent       : 10px;
  text-decoration   : none;
      padding-left:12px;
}

#menu1 a.mainlevel:hover {
  font-size         : 12px;  
  color             : #FFFFFF;
  font-weight       : normal;
  text-decoration   : underline;
  text-indent       : 10px;
}
 
#menu2 a.mainlevel {
  margin-top        : 1px;
  padding-top       : 0px;
  font-size         : 12px;
  width             : 180px;
  text-indent       : 10px;
  background-image: url(../image/dop_raz.png);
  background-repeat:no-repeat;
  background-position:bottom left;
}
#menu2 a.mainlevel:link {
  padding           : 0px 0px 0px 0px;
  font-size         : 12px;
  width             : 180px;
  text-indent       : 10px;
}
#menu2 a.mainlevel:link, #menu2 a.mainlevel:visited {
  font-family       : Arial, Helvetica, sans-serif;
  font-size         : 11px;
  font-weight       : normal;
  padding           : 0px 5px 0px 0px;
  color             : #6b6b6b;
  width             : 180px;
  text-indent       : 10px;
  text-decoration   : none;
  padding-left: 10px;
}

#menu2 a.mainlevel:hover {
  font-size         : 11px;  
  color             : #6b6b6b;
  font-weight       : normal;
  text-decoration   : underline;
  text-indent       : 10px;
}

прикол оказался в том, что explorer, в отличие от оперы и мозилы, не воспринимает эти штуки:

Код
#menu1 li {
  list-style-type: none;
  display: inline;
  }
 #menu1 li:before {
  content: url(../image/menu_point.png);
 }

Код
#menu2 li {
  list-style-type: none;
  display: inline;
  }
 #menu2 li:before {
  content:  "| ";
 }

сделал меню не как список, а горизонтальным обычным меню и просто назначил на фон пунктов меню изображение, которое хотел, чтобы выходилось вместо маркера и задал отступы слева. вот и все решение оказалось))) *DRINK*
« Последнее редактирование: 31.03.2010, 22:01:19 от sett »
*

kolka88

  • Осваиваюсь на форуме
  • 26
  • 0 / 0
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

убрать из меню заголовки h3

Автор nexter

Ответов: 19
Просмотров: 8693
Последний ответ 03.02.2020, 18:49:47
от durte
При добавлении нового пункта меню не отображается содержимое

Автор Denko

Ответов: 2
Просмотров: 3816
Последний ответ 16.01.2020, 18:40:55
от Denko
Не нажимается пункт меню на мобильной версии

Автор Sensession

Ответов: 7
Просмотров: 5466
Последний ответ 04.01.2020, 16:45:27
от xpank
Не отображаются пункты в меню

Автор physic

Ответов: 20
Просмотров: 23939
Последний ответ 20.09.2019, 16:54:01
от beliyadm
Как в ARI Ext Menu добиться работы параметра "Показать в меню"?

Автор vasmed

Ответов: 1
Просмотров: 4163
Последний ответ 01.03.2019, 11:12:18
от vasmed