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

SDKiller

  • Moderator
  • 2706
  • 329 / 5
  • ...ergo sum
В этой части речь пойдёт о безболезненных (без хаков) способах снижения количества запросов к базе данных в К2.

Вторая часть (хаки) будет после выхода версии 2.5
Хотя пока по сборкам с svn не наблюдается движения в сторону решения этих вопросов.

Исходные данные:

Имеем 9 родительских и 24 дочерние категории. Родительские категории работают в режиме каталога, материалы публикуются в
дочерних категориях.

На главной необходимо отобразить последние материалы из всех категорий. Лимит вывода материалов - 20 на страницу.
Необходимо меню, в котором будут пункты для каждой из родительской категории и подчинённые им пункты для дочерних категорий.

Делаем всё казалось бы самым естественным и простым способом. Итог - имеем более 120 запросов к базе данных (более 160 с модулем K2 Tools).


Что делать:

1. Отказываемся от использования в качестве меню модуля K2 Tools.

Конечно очень соблазнительно выбрать категорию верхнего уровня и иметь в результате готовое дерево категорий в качестве меню.

Однако в данном случае функция treerecurse() модуля начинает строить запросы от корневой категории, разыскивая дочерние категории.

Для приведённых исходных данных, даже ограничив в модуле число отображаемых уровней 2-мя (чтобы избежать холостых запросов на поиск дочек у наших категорий низшего уровня), мы всё равно имеем 43 запроса для вывода модуля.

Вывод: как это ни трудоёмко при большом количестве категорий, всё же лучше делать меню через стандартное меню J!, назначая вручную категорию каждому пункту меню.



2. Грамотно назначаем параметры для пункта меню

Вспоминаем нашу задачу - необходимо вывести на Главной материалы из всех категорий в количестве 20 штук на страницу.

То есть нам необходимо для пункта меню Главная назначить тип меню К2 -> Списки материалов -> Категории

Со страшной силой тянет поддаться соблазну  ^-^ выбрать в основных параметрах пункта меню родительскую категорию (категории) и установить "Материалы из дочерних категорий" - "Да".

Нельзя по тем же соображениям, что и в пункте 1.

Вместо этого: Выбираем категории самого нижнего уровня и устанавливаем "Материалы из дочерних категорий" - "Нет".

Количество кликов мышкой будет конечно больше, зато в нашем примере будет на 49 69 запросов к базе меньше.

UPD: Пересчитал ещё раз )))




3. Настраиваем категории

"Наследовать параметры опций из категории" - опция, которая казалось бы призвана облегчить жизнь.

К сожалению, с точки зрения запросов к базе, сделано не совсем оптимально.

Логичнее было бы ограничиться одним запросом при создании (редактировании) категории, чтобы в параметры дочерней категории записать параметры родительской.
Или, в крайнем случае, цепочкой запросов, если меняются параметры родительской. В любом случае это происходило бы не так часто.

Сейчас же включение этой опции приводит к тому, что запрос параметров родительской категории происходит всякий раз при выводе материалов из дочерней или при выводе списка категорий.
Таким образом, если у нас на странице 20 категорий, у которых включена опция наследования - имеем дополнительно 20 запросов.

Выход: не использовать наследование, устанавливать вручную для каждой категории опции отображения.



4. Избавляемся от лишнего


Следует подумать - так ли уж необходимы при выводе списка материалов например отображение тегов или ссылки "добавить комментарий".
Вывод в списке категорий количества материалов в категориях также добавляет запросов.


Календарь, входящий как одна из функций в K2 Tools, тоже требует оптимизации - по одному запросу на каждый день месяца.



5. Ещё возможные направления:

Снизил ко-во запросов с 99 до 42 путем установки "режим каталога" (до этого просто стояла настройка "Количество Основных материалов" - 0)



To be continued... ^-^

« Последнее редактирование: 19.04.2011, 02:39:15 от SDKiller »
*

staticlight

  • Moderator
  • 1086
  • 65 / 0
  • Staticlight
У меня на данный момент несколько вопросов.
Но без ответа на первый вопрос невозможны остальные.
Итак: каким образом в Joomla посмотреть количество запросов к БД?
Руководитель отдела сервисного обслуживания систем безопасности.
Устали от com_content - поставьте com_k2.
TRIPLE "F" POWER: Firefox+FireShot+Firebug. Chrome + Ctrl+Shift+I
*

SDKiller

  • Moderator
  • 2706
  • 329 / 5
  • ...ergo sum
Итак: каким образом в Joomla посмотреть количество запросов к БД?

Включаем режим отладки. В позиции debug смотрим.
У era на сайте был очень полезный хак для libraries/joomla/database/database/mysql.php, который позволяет посмотреть запросы в более подробном виде по сравнению со стандартным, вот так:

Код
#
\components\com_k2\models\frontpage.php:923
\components\com_k2\models\frontpage.php:22
Execute time:0.001777 sec.
SELECT `value`
  FROM jos_k2_extra_fields
  WHERE `id`=1

Файл здесь http://narod.ru/disk/10482586001/mysql.zip.html (для 1.5.22, под 1.5.23 не смотрел - были ли там изменения в библиотеках БД)
Папка upload опять заполнена )))
« Последнее редактирование: 18.04.2011, 16:01:21 от SDKiller »
*

staticlight

  • Moderator
  • 1086
  • 65 / 0
  • Staticlight
Прошу прощения, пока задавал вопрос, залез в поиск и нашел ответ.
На главной аж 25 (причем, если я правильно понимаю, что большее ко-во запросов из-за поиска)
Главная
Но протестив дебаг, удивился количеству запросов - 99
Внутренняя
Отключение k2 tools уменьшает кол-во запросов всего на 4.

Есть какое-то лекарство для этого?


UPD: хакнул библиотеку
« Последнее редактирование: 18.04.2011, 16:14:04 от staticlight »
Руководитель отдела сервисного обслуживания систем безопасности.
Устали от com_content - поставьте com_k2.
TRIPLE "F" POWER: Firefox+FireShot+Firebug. Chrome + Ctrl+Shift+I
*

SDKiller

  • Moderator
  • 2706
  • 329 / 5
  • ...ergo sum
Ну 25 на главной - это терпимо.
99 на внутренней при том что там отображается всего 4 категории в режиме каталога - конечно много.

Запросы бегло посмотрел, скопировал себе.
Часть из них - то, с чем уже надо бороться посредством хака itemlist (зачастую там идёт дублирование).

Вопрос - в настройках К2 комментарии отключены?
*

staticlight

  • Moderator
  • 1086
  • 65 / 0
  • Staticlight
Да, отключены для всех типов пользователей.
Снизил ко-во запросов с 99 до 42 путем установки "режим каталога" (до этого просто стояла настройка "Количество Основных материалов" - 0)
Руководитель отдела сервисного обслуживания систем безопасности.
Устали от com_content - поставьте com_k2.
TRIPLE "F" POWER: Firefox+FireShot+Firebug. Chrome + Ctrl+Shift+I
*

SDKiller

  • Moderator
  • 2706
  • 329 / 5
  • ...ergo sum
Да, отключены для всех типов пользователей.

Вот в этом заключается ещё один, по моему мнению, баг, с которым можно бороться только посредством хака.
Поскольку даже при отключении комментариев в глобальных настройках компонета, всё равно рождаюся запросы вида:

Код
      
SELECT COUNT(*)
FROM jos_k2_comments
WHERE published=1
AND itemID=
*

SDKiller

  • Moderator
  • 2706
  • 329 / 5
  • ...ergo sum
Но у вас там помимо всего много запросов, не имеющих отношения к К2, например от rereplacer
*

staticlight

  • Moderator
  • 1086
  • 65 / 0
  • Staticlight
Но у вас там помимо всего много запросов, не имеющих отношения к К2, например от rereplacer

Спасибо за дельное замечание.
Компонент был установлен, но ни одно правило не было опубликовано (просто тестил компонент когда-то).
Плюс ко всему, при запрете данного компонента, кол-во запросов не уменьшается.
Снес компонент, получил минус 4-7 запросов.
Руководитель отдела сервисного обслуживания систем безопасности.
Устали от com_content - поставьте com_k2.
TRIPLE "F" POWER: Firefox+FireShot+Firebug. Chrome + Ctrl+Shift+I
*

AnnaOl

  • Захожу иногда
  • 209
  • 0 / 0
Ух, как интересно и полезно!  Спасибо большое!
*

Очередной вебмастер

  • Давно я тут
  • 768
  • 55 / 0
  • лысый умный дядя
Разработчики, по-моему, собирались решить это вопрос в новой версии, но ее все нет и нет  :(
Сайты на Joomla, разработка и поддержка
----------
Помог ответ - жми плюс!
*

SDKiller

  • Moderator
  • 2706
  • 329 / 5
  • ...ergo sum
... новой версии, но ее все нет и нет  :(

Можно взять текущий svn-релиз для изучения, там же на http://getk2.org/
*

Очередной вебмастер

  • Давно я тут
  • 768
  • 55 / 0
  • лысый умный дядя
Можно взять текущий svn-релиз для изучения, там же на http://getk2.org/
Брал, ставил, нашел баги, удалил.
Сайты на Joomla, разработка и поддержка
----------
Помог ответ - жми плюс!
*

skai

  • Завсегдатай
  • 1198
  • 153 / 1
  • skaiseo
Ко всему прочему, я бы ещё посоветовал как следует порезать .php и CSS шаблона - всё неиспользуемое удаляем.
Наполнение вашего сайта - 1т.р. стр. (текст, изображения, мета, перелинковка). Гарантия высокого ранжирования. SEO консультация в подарок.
----------------------------------------------------------------------------------------------
*

x1

  • Давно я тут
  • 617
  • 15 / 0
  • Linux — это Windows для бытовой техники
Ну 25 на главной - это терпимо.

Я в шоке - на главной 261 запрос из них 100 - JoomSEF 29 -joomGallery. Если их отключить то все равно остается 141 запрос для главной, где выводится список всего 5-ти (!) материалов К2 в режиме каталога из 6 категорий. Категрии имеют 2-4 подкатегории, т.е. всего 17 подкатегорий для поиска. Прокомментируйте пожалуйста, это так и должно быть?
*

x1

  • Давно я тут
  • 617
  • 15 / 0
  • Linux — это Windows для бытовой техники
Вот здесь предлагается уменьшить к-во запросов в модуле mod_k2_tools, но я разницы, после изменения кода,  не заметил:


h__p://community.getk2.org/forum/topics/k2tools-large-amoutn-of
*

AnnaOl

  • Захожу иногда
  • 209
  • 0 / 0
Я в шоке - на главной 261 запрос из них 100 - JoomSEF 29 -joomGallery. Если их отключить то все равно остается 141 запрос для главной, где выводится список всего 5-ти (!) материалов К2 в режиме каталога из 6 категорий. Категрии имеют 2-4 подкатегории, т.е. всего 17 подкатегорий для поиска. Прокомментируйте пожалуйста, это так и должно быть?

Разобрались?
*

msweb

  • Захожу иногда
  • 63
  • 0 / 0
А где же обещанное продолжение?
*

SDKiller

  • Moderator
  • 2706
  • 329 / 5
  • ...ergo sum
Хотелось бы сначала дождаться выхода 2.5

На SVN пока движения не наблюдается, версии файлов от 28-29 апреля
*

msweb

  • Захожу иногда
  • 63
  • 0 / 0
Хотелось бы сначала дождаться выхода 2.5

На SVN пока движения не наблюдается, версии файлов от 28-29 апреля

Я понимаю, но есть сайт на версии 2.4.1 и запросы при отключенных комментариях (например) как-то напрягают. Может быть можно осветить вторую часть темы для данной версии?
*

Dagiz

  • Захожу иногда
  • 78
  • 1 / 0
Я в шоке - на главной 261 запрос из них 100 - JoomSEF
Пользуйтесь sh404SEF по моим тестам он рождает 8-25 запросов с учетом разных страниц,
 
Что удалось достичь посредством рекомендации SDKiller, стоит JomSocial, K2, sh404SEF, Jcomments и мелочи:

Главная страница было/стало: 111/88
В категориях к2:                      71/52
В статье к2:                            83/47

Наверно еще есть к чему стремиться еще можно кешировать запросы
*

arhad

  • Осваиваюсь на форуме
  • 40
  • 0 / 0
Интересно! А может кто сказать, какое количество запросов считается нормальным? Чтобы можно было понять, много или мало на своем сайте.
*

StarMag

  • Moderator
  • 228
  • 25 / 0
  • после ночи разбора РНР кода
Интересно! А может кто сказать, какое количество запросов считается нормальным? Чтобы можно было понять, много или мало на своем сайте.
Количество запросов это всегда компромис. Точной цифры не существует. Просто необходимо стремиться к их меньшему количеству. Но при этом не забывать о качестве, так сказать.
Ну почему никто никогда не читает справочные материалы?...
*

bulls

  • Захожу иногда
  • 134
  • 3 / 0
Интересно! А может кто сказать, какое количество запросов считается нормальным? Чтобы можно было понять, много или мало на своем сайте.
Вот здесь на сайте,после проверки мне написали:
 Число запросов: 95
 Среднее для всех сайтов: 69
У меня свой вопрос, я отключил кеширование и у меня снизилось число запросов с 138 до 18.
Это нормально, в смысле я тестю на локалке?
*

Langoliers

  • Давно я тут
  • 621
  • 67 / 2
  • Если б Я изучал людей, то был бы паразитологом
А у меня два вопроса, когда вторая часть с хаками :)
И еще, у меня нельзя переключить в настройках пункта меню категории "материалы из дочерних категорий" на "нет". Хотя категорию выбираю самую нижнюю...

P.S. и еще, как убрать запрос комментариев в базу? Я отключил комментарии, а запрос все равно есть...
« Последнее редактирование: 27.07.2012, 14:11:40 от Langoliers »
*

SDKiller

  • Moderator
  • 2706
  • 329 / 5
  • ...ergo sum
...когда вторая часть с хаками

Сильно в последнее время удалился от К2, если честно - компонент в линейке 2.5 разочаровал тем, что на уровне разрабочиков не решаются многие вопросы, которые поднимались ещё с 2.3.
Многие feature requests, которые не были бы обременительными при внедрении - например ввести дополнительные триггеры плагинов, были проигнорированы.
Проще его форкнуть, чем ждать прогресса в этом направлении.

P.S. и еще, как убрать запрос комментариев в базу? Я отключил комментарии, а запрос все равно есть...

В версии 2.4.1 я изменил условие в функции prepareItem() модели item.php (было в самом конце функции).

В 2.4.1 у меня выглядело так:

Код
if ($params->get('comments')>0){
    if(($view=='itemlist' OR $task=='category' OR $view=='frontpage') AND ($item->params->get('catItemCommentsAnchor')==0))
        {$item->numOfComments='';
    } else {
        $item->numOfComments = K2ModelItem::countItemComments($item->id);
    }
}
*

Langoliers

  • Давно я тут
  • 621
  • 67 / 2
  • Если б Я изучал людей, то был бы паразитологом
Сильно в последнее время удалился от К2, если честно - компонент в линейке 2.5 разочаровал тем, что на уровне разрабочиков не решаются многие вопросы, которые поднимались ещё с 2.3.
Многие feature requests, которые не были бы обременительными при внедрении - например ввести дополнительные триггеры плагинов, были проигнорированы.
Проще его форкнуть, чем ждать прогресса в этом направлении.
Спасибо, буду ковырять...
А чем пользуетесь если не секрет? ZOO или Seblod?..
*

chilly_bang

  • Захожу иногда
  • 113
  • 1 / 1
Так как здесь мне никто на ошибки на указал, перенесу сюда как совет по оптимизации:
при просмотре отдельной К2-статьи видно разное количество запросов (у меня 12 штук) вида:
Код: sql
SELECT id, gender, description, image, url, `group`, plugins
FROM rse_k2_users
WHERE userID=109

Этот запрос генерируется в файле components/com_k2/models/item.php, в самом конце, в функции
Код: php
function getUserProfile($id = NULL)
{
 
$db = JFactory::getDBO();
if (is_null($id))
$id = JRequest::getInt('id');
 
static $K2UsersInstances = array();
if (isset($K2UsersInstances[$id]))
{
return $K2UsersInstances[$id];
}
 
$query = "SELECT id, gender, description, image, url, `group`, plugins FROM #__k2_users WHERE userID={$id}";
$db->setQuery($query);
$row = $db->loadObject();
$K2UsersInstances[$id] = $row;
return $row;
}
Закомментировав последние 5 строк, получаем снижение кол-ва запросов без видимых проблем с функционалом.
*

stef21

  • Захожу иногда
  • 156
  • 8 / 0
Включаем режим отладки. В позиции debug смотрим.
Как смотреть в позиции debug подскажите?
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

количество статей рядом с тегом

Автор kira

Ответов: 1
Просмотров: 636
Последний ответ 27.11.2017, 11:25:26
от kira
Как изменить количество колонок в "похожие материалы "?

Автор sergspb

Ответов: 0
Просмотров: 899
Последний ответ 11.06.2017, 11:14:38
от sergspb
Где К2 хранит количество просмотров и рейтинг ?

Автор mrmarkov

Ответов: 4
Просмотров: 984
Последний ответ 14.07.2016, 12:58:05
от mrmarkov
Количество нажатий на ссылку в доп. полях

Автор kolhoz

Ответов: 1
Просмотров: 961
Последний ответ 23.11.2015, 06:30:12
от jurassik
Как вывести количество материалов в каталоге?

Автор kysin

Ответов: 0
Просмотров: 905
Последний ответ 13.01.2015, 15:23:53
от kysin