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

sasha198407

  • Осваиваюсь на форуме
  • 10
  • 0 / 0
Доброго времени суток. Установил Joomala 1.15+VirtueMart, также установил модули mod_virtuemart_search, mod_virtuemart_cart, mod_virtuemart, mod_virtuemart_login. Я хочу, что бы mod_virtuemart_search и mod_virtuemart_cart находились друг под другом с правой стороны в banner1. Ну ни вопрос, взял я их туда пихнул, через веб-интерфейс назначил порядок одному 1, другому 2. В опере получилось отлично(один под другим), а в IE6 один вылазиет на другой.

index.php
<?php
defined('_JEXEC') or die('Restricted access'); // no direct access
require_once dirname(__FILE__). DIRECTORY_SEPARATOR . 'functions.php';
$document = null;
if (isset($this))
$document = & $this;
$baseUrl = $this->baseurl;
$templateUrl = $this->baseurl . '/templates/' . $this->template;
artxComponentWrapper($document);
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?php echo $this->language; ?>" lang="<?php echo $this->language; ?>" >
<head>
<jdoc:include type="head" />
<link rel="stylesheet" href="<?php echo $this->baseurl; ?>/templates/system/css/system.css" type="text/css" />
<link rel="stylesheet" href="<?php echo $this->baseurl; ?>/templates/system/css/general.css" type="text/css" />
<link rel="stylesheet" type="text/css" href="<?php echo $templateUrl; ?>/css/template.css" media="screen" />
<!--[if IE 6]><link rel="stylesheet" href="<?php echo $templateUrl; ?>/css/template.ie6.css" type="text/css" media="screen" /><![endif]-->
<!--[if IE 7]><link rel="stylesheet" href="<?php echo $templateUrl; ?>/css/template.ie7.css" type="text/css" media="screen" /><![endif]-->
<script type="text/javascript" src="<?php echo $templateUrl; ?>/jquery.js"></script>
<script type="text/javascript">jQuery.noConflict();</script>
<script type="text/javascript" src="<?php echo $templateUrl; ?>/script.js"></script>
</head>
<body>
<div id="art-main">
<div class="art-sheet">
<div class="art-sheet-tl"></div>
<div class="art-sheet-tr"></div>
<div class="art-sheet-bl"></div>
<div class="art-sheet-br"></div>
<div class="art-sheet-tc"></div>
<div class="art-sheet-bc"></div>
<div class="art-sheet-cl"></div>
<div class="art-sheet-cr"></div>
<div class="art-sheet-cc"></div>
<div class="art-sheet-body">
<div class="art-header">
<div class="art-header-center">
<div class="art-header-jpeg"></div>
</div>

</div>

<div class="art-poisk">
<jdoc:include type="modules" name="banner1" style="artstyle" artstyle="art-nostyle" />

<!-- <jdoc:include type="modules" name="cart" style="artstyle" artstyle="art-nostyle" />-->
</div>

<?php echo artxPositions($document, array('top1', 'top2', 'top3'), 'art-block'); ?>
<div class="art-content-layout">
<div class="art-content-layout-row">
<?php if (artxCountModules($document, 'left')) : ?>
<div class="art-layout-cell art-sidebar1">
<?php echo artxModules($document, 'left', 'art-block'); ?>
<div class="art-left1">
<jdoc:include type="modules" name="left1" style="artstyle" artstyle="art-nostyle" />
</div>
<div class="cleared"></div>
</div>
<?php endif; ?>
<?php $contentCellStyle = artxCountModules($document, 'left')? 'content' : 'content-wide'; ?>
<div class="art-layout-cell art-<?php echo $contentCellStyle; ?>">

<?php
echo artxModules($document, 'banner2', 'art-nostyle');
if (artxCountModules($document, 'breadcrumb'))
echo artxPost(null, artxModules($document, 'breadcrumb'));
echo artxPositions($document, array('user1', 'user2'), 'art-article');
echo artxModules($document, 'banner3', 'art-nostyle');
?>
<?php if (artxHasMessages()) : ?><div class="art-post">
<div class="art-post-body">
<div class="art-post-inner">
<div class="art-postcontent">

<jdoc:include type="message" />

</div>
<div class="cleared"></div>

</div>

<div class="cleared"></div>
</div>
</div>
<?php endif; ?>
<jdoc:include type="component" />
<?php echo artxModules($document, 'banner4', 'art-nostyle'); ?>
<?php echo artxPositions($document, array('user4', 'user5'), 'art-article'); ?>
<?php echo artxModules($document, 'banner5', 'art-nostyle'); ?>

<div class="cleared"></div>
</div>

</div>
</div>
<div class="cleared"></div>


<?php echo artxPositions($document, array('bottom1', 'bottom2', 'bottom3'), 'art-block'); ?>
<jdoc:include type="modules" name="banner6" style="artstyle" artstyle="art-nostyle" />
<div class="art-footer">
<div class="art-footer-t"></div>
<div class="art-footer-l"></div>
<div class="art-footer-b"></div>
<div class="art-footer-r"></div>
<div class="art-footer-body">
<div class="art-footer-text">
<?php if (artxCountModules($document, 'copyright') == 0): ?>
<?php ob_start(); ?>
<p><a href="#">Главная</a> | <a href="#">Доставка</a> | <a href="#">Контакты</a> | <a href="#">Оптовикам</a></p><p>ООО "Устина" &copy; %YEAR%. Все права защищены.</p>

<?php echo str_replace('%YEAR%', date('Y'), ob_get_clean()); ?>
<?php else: ?>
<?php echo artxModules($document, 'copyright', 'art-nostyle'); ?>
<?php endif; ?>
</div>
<div class="cleared"></div>
</div>
</div>
<div class="cleared"></div>
</div>
</div>
<div class="cleared"></div>
<p class="art-page-footer"><br></p>

</div>
</body>
</html>

template.php

.....


/* begin Poisk */
.inputbox1
{
border: none;
border-top:1px solid #989898;
border-bottom:1px solid #989898;
background-repeat:no-repeat;
background-position:0 0;
padding:3px 2px 2px 4px;
font-size:10px;
width:142px;
height: 13px;

}
/* end Poisk */

/* begin Box, Post */
.art-post
{
position: relative;
margin: 0 auto;
min-width: 1px;
min-height: 1px;
}

.art-post-body
{
position: relative;
padding: 10px;
}


.art-post
{
margin: 5px;
}

a img
{
border: 0;
}

.art-article img, img.art-article
{
border: solid 0 #CEBBA6;
margin: 7px;
}

.art-metadata-icons img
{
border: none;
vertical-align: middle;
margin: 2px;
}

.art-article table, table.art-article
{
border-collapse: collapse;
margin: 1px;
}

.art-article th, .art-article td
{
padding: 2px;
border: solid 1px #000000;
vertical-align: top;
text-align: left;
}

.art-article th
{
text-align: center;
vertical-align: middle;
padding: 7px;
}

pre
{
overflow: auto;
padding: 0.1em;
float:left;
}

/* end Box, Post */

....




Ни кто не знает, как решить проблему? Либо хоть куда капать скажите. Зарание спасибо.
*

hoock

  • Захожу иногда
  • 378
  • 42 / 0
Re: Выровнять положение корзины
« Ответ #1 : 30.04.2011, 13:29:16 »
Если дадите ссылку может и поможем :)
В случае что помог - спасибо слишком много, пиво и + будет в самый раз *DRINK*
*

sasha198407

  • Осваиваюсь на форуме
  • 10
  • 0 / 0
*

hoock

  • Захожу иногда
  • 378
  • 42 / 0
Re: Выровнять положение корзины
« Ответ #3 : 30.04.2011, 14:00:59 »
Так а вы не видите что вы пихаете 2 модуля в одну маленькую позицию?
В случае что помог - спасибо слишком много, пиво и + будет в самый раз *DRINK*
*

sasha198407

  • Осваиваюсь на форуме
  • 10
  • 0 / 0
Re: Выровнять положение корзины
« Ответ #4 : 03.05.2011, 00:37:12 »
А как создать 2 позицию?
*

Taatshi

  • Гуру
  • 5258
  • 481 / 2
  • Верстаем и кодим. Обращайтесь ;)
Re: Выровнять положение корзины
« Ответ #5 : 03.05.2011, 09:31:28 »
поставьте корзину в top3, а левое меню поднимите - и "пусть все будет так, как ты захочешь.."))

А вообще-то у Вас в шаблоне табличная верстка, поднять меню будет непросто, так что напишу то, что сначала хотела - переверстать шаблон или найти другой.
« Последнее редактирование: 03.05.2011, 09:34:43 от Taatshi »
ВЕРСТКА, САЙТЫ ПОД КЛЮЧ, УДАЛЕНИЕ ВИРУСОВ, МИГРАЦИЯ НА JOOMLA 3, ОБНОВЛЕНИЕ  |  ОТЗЫВЫ 
Связь: telegram - Taatshi, почта - Taatshi на яндексе, Skype - Taatshi
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Как выровнять заголовки страниц по центру и увеличить

Автор artruslan

Ответов: 14
Просмотров: 4181
Последний ответ 04.12.2014, 21:06:48
от Shustry
Выровнять баннер

Автор shiloo

Ответов: 7
Просмотров: 5866
Последний ответ 05.04.2014, 01:49:06
от rostby
Выровнять слайд шоу по центру монитора

Автор Ismatov

Ответов: 1
Просмотров: 1228
Последний ответ 28.09.2013, 17:10:11
от evgen777
Как выровнять товары по нижней кнопке купить?

Автор Vorzhev

Ответов: 8
Просмотров: 1565
Последний ответ 18.01.2013, 10:57:04
от robert
Как выровнять названия категорий и товаров в одну линию в VirtueMart?

Автор Vorzhev

Ответов: 1
Просмотров: 1916
Последний ответ 06.12.2012, 00:16:59
от pormonik