@AndreyBLG

Как оптимизировать количество запросов в БД Wordpress, как найти самые тяжелые запросы?

Приветствую!
Подскажите как отследить самые "тяжелые" запросы в БД на сайте WP?
Для того чтобы либо от них избавиться, что-то пересмотреть, либо как-то оптимизировать и т.п.

Этот новый "проблемный" вариант шаблона стр. пока на localhost, поэтому есть возможность экспериментировать.
Сейчас на стр. 730 запросов в базу обрабатываются больше пяти секунд, до 6-ти, очень долго.

Вводные данные такие:
Выводятся товары, по 30 шт на стр. до пагинации, всего 150 шт.
У каждого 8 мета-полей, с ценами, характеристиками и т.п., + карточка с миниатюрой.
Применяется сортировка вывода.

Есть момент, надо признаться сразу :)
Вывод подразумевает два варианта отображения - плиткой и списком.
У обоих принципиально разные варианты вывода, html разметки, поэтому приходится выгружать записи дважды, с разными шаблонами, в разных циклах, а потом js'ом скрывать по очереди при клике на "плиткой" - "списком".
Тут по-любому надо что-то пересмотреть, пока не знаю как это сделать без двух разных циклов с разными шаблонами, может вообще отказаться от такого вывода и придумать что-то другое... ну короче это чистосердечное признание, что костыль есть!)

Как бы Вы искали "узкие места", как это дебажить, как смотреть какие именно запросы отрабатываются дольше всего?
Спасибо
  • Вопрос задан
  • 357 просмотров
Решения вопроса 1
deniscopro
@deniscopro Куратор тега WordPress
WordPress-разработчик, denisco.pro
Как бы Вы искали "узкие места", как это дебажить, как смотреть какие именно запросы отрабатываются дольше всего?

Например, плагин Query Monitor.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
HeadOnFire
@HeadOnFire
PHP, Laravel & WordPress Evangelist
У обоих принципиально разные варианты вывода, html разметки, поэтому приходится выгружать записи дважды, с разными шаблонами, в разных циклах, а потом js'ом скрывать по очереди при клике на "плиткой" - "списком".


Вот в разных циклах не надо, посты ведь те же. Используйте rewind_posts(), что существенно сократит количество запросов. Также, смотрите в сторону object cache, кеширования запросов через механизмы transients или прямой работы с кешем.

По поводу отладки см. ответ Денис Янчевский
Ответ написан
@YanAlexandrov
Чайник со стажем
Реализовать плитка-список можно и без того, чтобы дважды выводить товары. Создайте кнопку-переключатель и вешайте событие: при клике по кнопке добавляете-убавляете классы у div. А в CSS прописывайте оформление. Примеров много: раз
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы