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

reg-ad-site

  • Захожу иногда
  • 410
  • 14 / 3
  • Если помог, ставь +
Заметаем следы Joomla!
« : 08.06.2011, 20:46:02 »
Ну вроде можно публиковать информацию такого рода, по этому буду писать может кому то и пригодиться. В данный момент мало времени, успею написать лишь о том как скрыть просмотр блоков по запросу "http://site.ru/?tp=1" и покажу изменения постраничной навигации (ИМХО в Joomla! она специфическая).
Скрытие просмотра блоков по адресу "http://site.ru/?tp=1":
Открываем файл /libraries/joomla/application/module/helper.php
Ищем строки:

Код
if(count($result) == 0) {
if(JRequest::getBool('tp')) {
       $result[0] = JModuleHelper::getModule( 'mod_'.$position );
$result[0]->title = $position;
$result[0]->content = $position;
$result[0]->position = $position;
}
}
Комментируем их.
Далее ищем строки:

Код
if(JRequest::getBool('tp')) {
$attribs['style'] .= ' outline';
}
И тоже их комментируем.
Изменяем постраничную навигацию Joomla!:
Для того, что бы получить возможность работать со стилями навигации через CSS необходимо заменить содержимое файла  pagination.php, находящегося по адресу:/public_html/сайт.ru/шаблоны/ваш шаблон/html/pagination.php на следующий код:
Код
<?php
/**
 * @version $Id: pagination.php 10381 2008-06-01 03:35:53Z pasamio $
 * @package Joomla
 * @copyright Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
 * @license GNU/GPL, see LICENSE.php
 * Joomla! is free software. This version may have been modified pursuant
 * to the GNU General Public License, and as distributed it includes or
 * is derivative of works licensed under the GNU General Public License or
 * other free or open source software licenses.
 * See COPYRIGHT.php for copyright notices and details.
 */

// no direct access
defined('_JEXEC') or die('Restricted access');

/**
 * This is a file to add template specific chrome to pagination rendering.
 *
 * pagination_list_footer
 * Input variable $list is an array with offsets:
 * $list[limit] : int
 * $list[limitstart] : int
 * $list[total] : int
 * $list[limitfield] : string
 * $list[pagescounter] : string
 * $list[pageslinks] : string
 *
 * pagination_list_render
 * Input variable $list is an array with offsets:
 * $list[all]
 * [data] : string
 * [active] : boolean
 * $list[start]
 * [data] : string
 * [active] : boolean
 * $list[previous]
 * [data] : string
 * [active] : boolean
 * $list[next]
 * [data] : string
 * [active] : boolean
 * $list[end]
 * [data] : string
 * [active] : boolean
 * $list[pages]
 * [{PAGE}][data] : string
 * [{PAGE}][active] : boolean
 *
 * pagination_item_active
 * Input variable $item is an object with fields:
 * $item->base : integer
 * $item->link : string
 * $item->text : string
 *
 * pagination_item_inactive
 * Input variable $item is an object with fields:
 * $item->base : integer
 * $item->link : string
 * $item->text : string
 *
 * This gives template designers ultimate control over how pagination is rendered.
 *
 * NOTE: If you override pagination_item_active OR pagination_item_inactive you MUST override them both
 */

function pagination_list_footer($list)
{
$html = "<div class=\"list-footer\">\n";

$html .= "\n<div class=\"limit\">".JText::_('Display Num').$list['limitfield']."</div>";
$html .= $list['pageslinks'];
$html .= "\n<div class=\"counter\">".$list['pagescounter']."</div>";

$html .= "\n<input type=\"hidden\" name=\"limitstart\" value=\"".$list['limitstart']."\" />";
$html .= "\n</div>";

return $html;
}

function pagination_list_render($list)
{
// Initialize variables
$html = "<table width=100% class=\"pagination\"><td width=50% id=\"fluid\">&nbsp;</td>";
$html .= '<td id="nolinked"><span>&laquo;</span></td>'.$list['start']['data'];
$html .= $list['previous']['data'];

foreach( $list['pages'] as $page )
{
if($page['data']['active']) {
$html .= '';
}

$html .= $page['data'];

if($page['data']['active']) {
$html .= '';
}
}

$html .= $list['next']['data'];
$html .= $list['end']['data'];
$html .= '<td id="nolinked">&raquo;</td>';

$html .= "<td width=50% id=\"fluid\">&nbsp;</td></table>";
return $html;
}

function pagination_item_active(&$item) {
return "<td id=\"linked\"><a href=\"".$item->link."\" title=\"".$item->text."\">".$item->text."</a></td>";
}

function pagination_item_inactive(&$item) {
return "<td id=\"nolinked\">".$item->text."</td>";
}
?>
Затем в CSS файл шаблона, ну например template.css добавить:
Код
.paginate { 
        margin:30px auto 0px;  
        width: 100%;
}
/*тут все касательно оформления таблицы*/
table.pagination  {
}

table.pagination  td {
        padding:0px; margin:0px 4px 0px 4px;
        border:solid #444 1px;
        background:none;
        line-height:18px;
}
/*распорка для центровки таблицы*/
#fluid { border:none;}
/* настройка параметров ячейки без ссылок*/
#nolinked {
        color:#ccc;
        background-color:#666;
        padding:3px 6px 3px 6px;
        border:solid #333 1px;
}
/*настройка параметров активных ячеек*/
#linked {
background-color:#FFF;
padding:0px;
border:solid #555 1px;
}
 /*параметры ссылок в ячейках*/
#linked a {
color:#ccc;
background-color:#666;
padding:3px 6px 3px 6px;
margin:0px;
display:block;
line-height:18px; text-decoration: none;
}
/*ссылки в ячейках*/
#linked a:hover {
color:#ccc;
background-color:#333;
padding:3px 6px 3px 6px;
margin:0px;
display:block;
line-height:18px;
text-decoration: none;
}
Стили постраничной навигации конечно же настроены под мой сайт, по этому я добавил в код CSS комментарии, которые помогут вам разобраться с настройками.
В ближайшее время планирую дополнить тему информацией о том как изменить путь доступа и улучшить защиту администраторского раздела.
« Последнее редактирование: 09.06.2011, 11:40:56 от reg-ad-site »
*

st1

  • Захожу иногда
  • 51
  • 4 / 0
Re: Заметаем следы Joomla!
« Ответ #1 : 08.06.2011, 21:07:11 »
 Все равно останутся приставки com_, mod_, plg_ (com_content и др.)

Все следы очень долго прятать придется.
*

Android

  • Захожу иногда
  • 87
  • 9 / 1
  • Google наше все!
Re: Заметаем следы Joomla!
« Ответ #2 : 08.06.2011, 21:09:53 »
бесплатный авторский видеокурс Ивана Рябова "Убираем следы Joomla 1.5"

http://ivan-ryabov.ru/index.php?option=com_content&view=article&id=2&Itemid=3

ссылка на страницу загрузки на сайте автора
не сочтите за рекламу, просто курс полнее и нагляднее

все следы вообще вряд ли спрячешь, особенно если используешь готовый шаблон, пользующийся популярностью, уникальное для Joomla расширение
*

reg-ad-site

  • Захожу иногда
  • 410
  • 14 / 3
  • Если помог, ставь +
Re: Заметаем следы Joomla!
« Ответ #3 : 08.06.2011, 21:22:09 »
Да все убирать проблемно, но я как раз на пути к этому. С курсом согласен, но форум это место обсуждения и предложения вариантов, а курс это просто готовое решение.
*

st1

  • Захожу иногда
  • 51
  • 4 / 0
Re: Заметаем следы Joomla!
« Ответ #4 : 08.06.2011, 21:26:20 »
Да все убирать проблемно, но я как раз на пути к этому. С курсом согласен, но форум это место обсуждения и предложения вариантов, а курс это просто готовое решение.

Тогда лучше заметать следы у J 1.6. Все таки 1.5 скоро станет совсем не актуальной.
*

Android

  • Захожу иногда
  • 87
  • 9 / 1
  • Google наше все!
Re: Заметаем следы Joomla!
« Ответ #5 : 08.06.2011, 21:33:18 »
Вот я и хочу понять, как, используя бесплатные узнаваемые шаблоны с высокой популярностью, типичные расширения, модули и плагины, можно получить абсолютно уникальный сайт?  Мой знакомый работает с группой разработчиков из-за бугра. Там все очень просто: если хочет клиент уникальный сайт-его пишут с 0 и все. Убрать абсолютно все следы не возможно имхо. А если и получится - то просто не нужно. Ведь вам придется убрать и копирайты на многих расширения, ссылки на сайты их разработчиков т.е нарушить закон. Почему я дал ссылку на курс? Там описываются необходимые и достаточные действия по маскировке Joomla. К слову я ничего ни кому не навязываю Ваша заметка также считается готовым решением :) 

1.5 еще долго будет в ходу st1 вы видели у 1.5.23 подпись final?
« Последнее редактирование: 08.06.2011, 21:39:08 от Android »
*

reg-ad-site

  • Захожу иногда
  • 410
  • 14 / 3
  • Если помог, ставь +
Re: Заметаем следы Joomla!
« Ответ #6 : 08.06.2011, 21:49:03 »
1.5 еще долго будет в ходу st1 вы видели у 1.5.23 подпись final?
Согласен , с этой версией Joomla! наверное будет как с windows XP :).
Ну разве я пишу тут о том как удалять чьи то копирайты? , а вот в курсе по ссылке вами представленной как раз это делают!
По поводу компонентов тоже согласен, уникальный сайт - это сайт разработанный с нуля, но следует отметить, что я не говорю об уникализации, а о скрытии от глаз любопытных... тут больше вопросы безопасности!
*

Android

  • Захожу иногда
  • 87
  • 9 / 1
  • Google наше все!
Re: Заметаем следы Joomla!
« Ответ #7 : 08.06.2011, 21:54:14 »
Цитировать
Ну разве я пишу тут о том как удалять чьи то копирайты?
разве я говорю что вы об этом пишете?

Цитировать
тут больше вопросы безопасности!
Согласен.
Цитировать
а вот в курсе по ссылке вами представленной как раз это делают!
Опять таки любые знания могут быть использованы как во вред так и на благо. Я же не призываю удалять копирайты. Если автор курса так делает, зачем так же поступать другим.  А полезные приемы в курсе есть
*

reg-ad-site

  • Захожу иногда
  • 410
  • 14 / 3
  • Если помог, ставь +
Re: Заметаем следы Joomla!
« Ответ #8 : 08.06.2011, 22:16:16 »
разве я говорю что вы об этом пишете?
Нет конечно не говорите, но вы подняли вопрос об уникализации, но ведь я не назвал тему: "Уникализируем сайт на Joomla!"
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Joomla 1.5 как убрать кнопку редактировать материант с сайта

Автор andriy465

Ответов: 5
Просмотров: 4021
Последний ответ 12.11.2023, 23:37:03
от all_zer
Нужно wiki под Joomla

Автор THE KILLERS

Ответов: 9
Просмотров: 9692
Последний ответ 05.11.2020, 20:56:47
от Kijv
Поиск статьи по url сайта в админке Joomla 1.5

Автор Tema

Ответов: 5
Просмотров: 2194
Последний ответ 14.08.2020, 07:16:44
от rsn
Не могу войти в админку Joomla 1.5

Автор MrSkif

Ответов: 14
Просмотров: 10559
Последний ответ 12.09.2018, 19:36:32
от PaLyCH
Не войду в админку Joomla 1.5.26, пишет соединение с сервером было сброшено

Автор rom_4

Ответов: 4
Просмотров: 5511
Последний ответ 16.05.2018, 17:28:18
от Алексей MeRsOvOd