Оптимизация загрузки K2 в связке с плагином k2additonalcategories

  • 4 Ответов
  • 637 Просмотров

0 Пользователей и 1 Гость просматривают эту тему.

*

Оффлайн yunoshev

Многие жалуются на скорость загрузки страниц категории K2 при использовании плагина дополнительных категорий (чтоб одну статью можно было указать для разных категорий).
Решение по оптимизации весьма простое: добавить индексы полей catid, itemID в таблицу _k2_additional_categories.

Т.е. в БД должно быть вот так:
[spoiler]

[/spoiler]

Что у нас тормозило:
[spoiler]
Первый запрос
https://yadi.sk/d/hIrHsjz2iHtNY

Второй запрос (аналогичный, просто снимает количество найденных записей)
https://yadi.sk/d/cZwduCR3iHtVN
[/spoiler]

Что в итоге получаем:
[spoiler]

[/spoiler]

И еще один запрос, который берет количество записей от предыдущего запроса, можно оптимизировать следующим путем.
Открываем файл components\com_k2\models\itemlist.php, ищем функцию getTotal() и меняем на:
Код: (php) [Выделить]
function getTotal()
{
$user = JFactory::getUser();
$aid = $user->get('aid');
$db = JFactory::getDBO();
$params = K2HelperUtilities::getParams('com_k2');
$task = JRequest::getCmd('task');

// An elegant way to calculate rows
$db->setQuery('SELECT FOUND_ROWS()');  // no reloading the query! Just asking for total without limit
return $db->loadResult();
}
[spoiler][/spoiler]

В общем, у моего заказчика все работает теперь и быстро грузится ( http://krasnogorsk.telemo.ru/catalog/uslugi/dostavka-tsvetov ).

*

Онлайн voland

  • ********
  • 9939
  • [+]520 / [-]101
  • Пол: Мужской
  • СКАЙП утерян! Пишите в телеграм @volandku
    • Просмотр профиля
    • webstudio.pro
Картинок нет..
Я, впрочем уже оптимизировал и только потом натолкнулся на этот коммент.

Кратко - добавляем индекс в #_k2_additional_categories для полей itemID и catid

Насчет второй части - не понял, там же куча условий фильтрации порушится, так? То есть применимо только для малой части сайтов.

Ну и для поисковиков
K2, Additional Categories, k2_additional_categories, тормоза, медленно работает, ускорение, index, хак, улучшение, ускорение

*

Оффлайн tomat_ok

Вторая часть это уже индивидуальная доработка была, она не обязательна. Тут главное индексы добавить и будет сильно быстрей работать.

*

Онлайн voland

  • ********
  • 9939
  • [+]520 / [-]101
  • Пол: Мужской
  • СКАЙП утерян! Пишите в телеграм @volandku
    • Просмотр профиля
    • webstudio.pro
ЗЫ.
yunoshev, а как нашелся источник тормозов?
Или было понятно сразу в чём он?

А то я включал дебаг, делал в нём измерения скорости..
Но, я так понял, что эти запросы не попадают в дебаг

*

Оффлайн yunoshev

@voland
Тоже через Debug, просмотр запросов, что тормозят сайт (там ведь их время выполнения пишется), и анализ кода, оптимизация запросов.
Функция с getTotal() используется практически один раз и по назначению, поэтому ее изменение не приведет к нарушению работы компонента.
А в первом случае - да, тормоза были с индексами. Я на форуме разработчиков написал об этом детально еще в те дни и они пообещали исправить данный недочет в новой версии. Но исправили или нет -- не могу знать уже :)

Удачи!
« Последнее редактирование: 26.11.2015, 00:39:26 от yunoshev »