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

GOodm@n

  • Осваиваюсь на форуме
  • 37
  • 4 / 0
Здравствуйте.

Клиент захотел пагинацию в материале (< Предидущая Следующая >) с использованием аякса. Делаю с помощью jQuery().load()

Для этого немного изменил плагин, а именно файлик /plugins/content/pagenavigation.php к такому виду :

(кусок кода)
Код
if ($row->prev)
{
$html .= '
<li class="prev">
  <a href="'. $row->prev .'" id="link-prev">'
  . JText::_( 'Prev' ). '</a>
</li>'
;
$html .= '<script type="text/javascript">
jQuery(document).ready(function(){
  jQuery("#link-prev").click( function(){
  jQuery(".article-inner").slideUp("slow");
  jQuery(".article-inner").load(" ' . $row->prev . ' .ajax-inner", function() { jQuery(this).fadeIn(1500); });
  return false;
});
});
</script>';
}

if ($row->next)
{
$html .= '
<li class="next">
  <a href="'. $row->next .'" id="link-next">'
  . JText::_( 'Next' ).'</a>
</li>'
;
$html .= '<script type="text/javascript">
  jQuery(document).ready(function(){
  jQuery("#link-next").click( function(){
  jQuery(".article-inner").slideUp("slow");
  jQuery(".article-inner").load("'. $row->next . ' .ajax-inner", function() { jQuery(this).fadeIn(1500); });
  return false;
});
});
</script>';

.article-inner это у меня див в материале.
.ajax-inner это вложенный див в .article-inner

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

Заранее благодарен.

P.S. Посмотреть можно тут http://cosmonova.net/ru/news/74-new-features - первые ссылки навигации по страницах в материале.
*

GOodm@n

  • Осваиваюсь на форуме
  • 37
  • 4 / 0
Re: пагинация в материале на AJAX
« Ответ #1 : 03.07.2010, 15:47:18 »
Всё решилось! yes! Пришлось немного изменить свои позициии, а именно перенести выполняемый скрипт из плагина в шаблон материала и немного изменить по какому event запускать скрипт.

Если кому надо, то у меня получилось это примерно вот так:

Код: html
<div id=article>

   <div class="article-inner">

      <div class="ajax-inner">  Текст материала тут  </div>

      <ul>
         <li><a href="http://prev.page" class="link-prev">Предидущая</a></li>
         <li><a href="http://next.page" class="link-next">Следующая</a></li>
      </ul>

   </div>

<script type="text/javascript">
   jQuery(document).ready(function(){
 
     jQuery("#link-prev").live('click', function(){
        var prev_link = jQuery(this).attr("href");
        jQuery(".article-inner").slideUp(1500);
        jQuery(".article-inner").load( prev_link + ' .ajax-inner', function(){jQuery(this).slideDown(1500)});
        return false;
     });

     jQuery("#link-next").live('click', function(){
       var next_link = jQuery(this).attr("href");
       jQuery(".article-inner").slideUp(1500);
       jQuery(".article-inner").load( next_link + ' .ajax-inner', function(){jQuery(this).slideDown(1500)});
       return false;
     });

   });
</script>

</div>

Тут главное подогнать шаблон материалла под такую структуру, прописать классы для ссылок плагина пагинации и подключить jQuery.
« Последнее редактирование: 03.07.2010, 16:16:44 от GOodm@n »
*

devul

  • Захожу иногда
  • 283
  • 21 / 1
  • если помог можете поставить +
Re: пагинация в материале на AJAX
« Ответ #2 : 17.07.2010, 00:30:26 »
очень понравился сайт, но вот как обстоят дела с индексацией? все же не последнее место занимает вопрос.. а так супер реализовано)
Бложик про joomla, k2, joomshoppingdevul.ru
*

GOodm@n

  • Осваиваюсь на форуме
  • 37
  • 4 / 0
Re: пагинация в материале на AJAX
« Ответ #3 : 06.11.2010, 01:52:18 »
Упор делался на юзабильность сайта. Индексация заказчиком не выставлялась как приоритетное направление.
*

Lex

  • Завсегдатай
  • 1615
  • 274 / 1
Re: пагинация в материале на AJAX
« Ответ #4 : 06.11.2010, 01:59:57 »
Открой HTML страницы и посмотри ссылки. Вот по ним и пойдет робот. Судя по скрипту (c JQuery мало знаком) накачено поверх реальных ссылок, а роботы JS не выполняют.
Жизнь заставила учиться.
В личке на вопросы не отвечаю.
*

regionkaz

  • Захожу иногда
  • 90
  • 4 / 0
Re: пагинация в материале на AJAX
« Ответ #5 : 06.11.2010, 06:57:04 »
а роботы JS не выполняют.

Что касается Яндекса, то да, а вот Google уже давно читает js ссылки, не помню где про это читал, но это была достоверная информация.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Не могу распаковать jpa архив сайта Akeeba backup. ajax error

Автор smadkz

Ответов: 4
Просмотров: 1908
Последний ответ 26.12.2020, 15:15:15
от stendapuss
Помогите решить ошибку

Автор azumi

Ответов: 21
Просмотров: 4604
Последний ответ 08.09.2020, 18:47:08
от gartes
simpleform2 ошибка ajax error в Google chrome

Автор safronoff343

Ответов: 1
Просмотров: 1259
Последний ответ 05.06.2020, 20:36:42
от safronoff343
Не работает кнопка отправить ?

Автор warlocksp

Ответов: 6
Просмотров: 1657
Последний ответ 10.03.2017, 11:34:50
от warlocksp
Проблема с модулем simpleform2 - ошибка AJAX error

Автор Larisa

Ответов: 27
Просмотров: 12119
Последний ответ 22.11.2016, 14:59:44
от DemoNF