Почему сайт тормозит и долго загружается? – расскажу и покажу как пошагово найти причину медленной загрузки сайта на примере wordpress

Всем привет и с наступившим Новым годом!
Пока у меня выдалось довольно много свободного времени, я решил в праздники не обжираться салатами и не деградировать у телевизора, а заняться чем-то полезным — привести свои проекты в порядок и подготовить их к зарабатыванию бабосиков.

Первое, что нужно было сделать — это обновить старые сайты, которым уже по 2–3 года, и привести их в более-менее вменяемый вид.

Один из таких сайтов — https://rus-bel.online/
В своё время это был очень мощный и крутой проект, который приносил нам с партнёром нормальные деньги, когда мы находились в Яндекс.Новостях. У сайта хорошая история, нормальная ссылочная, статьи туда залетают в индекс без проблем — этим реально можно и нужно пользоваться.

Почему сайт тормозит и долго загружается? - расскажу и покажу как пошагово найти причину медленной загрузки сайта на примере wordpress

Но есть один нюанс.

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

Что я сделал и какой план работы:

  • На сайте я удалил все миниатюры к статьям. Сейчас развелось огромное количество «правообладателей», которые раскидывают свои фото по интернету, а потом рассылают досудебки с требованием заплатить за картинку 50–100 тысяч. В итоге сайт остался вообще без изображений (кстати, вы это и сейчас увидите).
  • На сайте больше 58 тысяч новостных материалов — вот данные на 2 января из Вебмастера. Тут есть два пути: либо удалять всё и оставлять только свежак, либо убирать старьё из индекса. Дальше расскажу, что именно я делал и почему.
    Почему сайт тормозит и долго загружается? - расскажу и покажу как пошагово найти причину медленной загрузки сайта на примере wordpress
  • Почему так медленно работает сайт? В этой статье я расскажу, как нашёл причину тормозов и медленной загрузки сайта на WordPress.
  • На сайте всё было очень криво и недружелюбно. Хотелось, чтобы статьи и новости выглядели нормально и читались без боли.
  • Нужно было выяснить реальную причину медленной загрузки сайта — дальше я покажу инструменты для замера скорости и расскажу, как ими пользоваться.
В этой статье будет минимум теории и максимум практики!
Это будет настоящее настольное пособие для новичков и профи, которые хотят понять, почему сайт тормозит и что создаёт нагрузку.
Если появятся вопросы — пишите в комментариях к статье или заходите в мою TG-группу https://t.me/NibblitClub, где мы с моим сообществом будем помогать разбирать ваши ситуации.

мой сайт настолько сильно тупил, что хостинг Beget ввёл против него санкции и вот тут начинается классическая история любого веб мастера что делать:?

Когда сайт медленно работает, почти все делают одно и то же:

  • бегут в гугл с запросом «почему сайт тормозит»
  • читают статьи «как ускорить сайт за 5 минут»
  • ставят плагины кеша
  • гоняют сайт через PageSpeed
  • оптимизируют картинки
  • подключают CDN (но это прям богатые админы) )

то все эти «оптимизации» — это просто стрельба по воробьям, давайте один раз напишем статью и разберем ее по-человечески:

  • что вообще значит «медленный сайт»
  • как замерять реальную скорость загрузки сайта
  • как понять, что именно грузит сайт
  • как найти причину тормозов

И главная мысль, которую стоит зафиксировать сразу:

Пока ты не понимаешь, где именно тратится время при загрузке страницы,
любые попытки ускорить сайт — это просто пустая трата времени и сил!

Дальше я покажу, как пошагово разобраться, почему сайт тормозит,

Статья будет постоянно дополняться свежими идеями и новыми мыслями на тему анализа загрузки сайта, его тормозов и того, как его реально ускорить, на основе моего опыта или ваших кейсов
Содержание

Как узнать что грузит сайт запросы в БД или код сайта с плагинами?

Почему сайт тормозит и долго загружается? - расскажу и покажу как пошагово найти причину медленной загрузки сайта на примере wordpress

Самый быстрый способ выяснить что тормозит сервер или WordPress

перед тем как начать давайте сделаем быстрый тест который нам покажет проблема все таки на сервере (хостинге) или с CMS WordPress (ну или какая там у вас)
Открой URL вашего сайта например с фавиконом:

Если:
• ⚡ страница открывается мгновенно → с сервер все ОК, проблема в WP
• 🐢 грузится долго → проблема на уровне сервера (идите мучить ТП вашего хостинга)

В моем случает страница загрузилась очень быстро, значит хостинг исключили и мы идем пилить наш WordPress и искать причину очень медленной загрузки страниц

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

  • Как проверить реальную скорость загрузки сайта?
  • Как узнать, сколько запросов отправляется в базу данных при открытии страницы?
  • Как вывести все SQL-запросы к базе при генерации страницы?
  • Как определить, какой плагин или компонент замедляет работу сайта?

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

Конечно, можно поставить десятки плагинов для анализа скорости сайта, SQL-запросов и нагрузок на WordPress. Но я не люблю всё это, потому что плагины только тормозят сайт ещё сильнее, а настоящую проблему они не показывают. Поэтому будем разбираться только через код — это быстрее, надёжнее и показывает реальную картину того, почему сайт медленно работает.

Вставь временно в wp-config.php:

define('SAVEQUERIES', true);
define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);

И в functions.php в самый низ:

add_action('wp_footer', function () {
    global $wpdb;
    echo '<!-- TIME: ' . timer_stop() . ' -->';
    echo '<!-- QUERIES: ' . count($wpdb->queries) . ' -->';
});

Теперь обновляем любую страницу сайта и открываем исходный код страницы (Ctrl+U). Через поиск находим кусок кода QUERIES: – должно выглядеть примерно так:

<!-- TIME: 5,957 --> 
<!-- QUERIES: 5988 -->

В моём случае сайт загружался почти 6 секунд, а количество SQL-запросов к базе данных достигало около 6000! Представляете, как хостинг терпел такой кошмар?

Для понимания: в среднем до 200 запросов к базе — это нормально для WordPress, а тут их было в 30 раз больше!

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

Первые исходные данные мы получили, теперь переходим к получению данных что же там пытается запросить сайт в БД на 6 тыс запосов.

Как узнать какие запросы отправляет сайт в базу данных при обновлении страницы?

Почему сайт тормозит и долго загружается? - расскажу и покажу как пошагово найти причину медленной загрузки сайта на примере wordpress

Теперь, когда у нас есть первые исходные данные — время загрузки страниц и количество SQL-запросов, — пора получить вторую часть информации.
Нам нужно понять, какие именно запросы отправляет WordPress в базу данных, почему их так много и где создаётся нагрузка на сервер.

Для этого временно вставляем в functions.php следующий код:

add_action('shutdown', function () {
    global $wpdb;
    foreach ($wpdb->queries as $q) {
        if ($q[1] > 0.05) {
            error_log('SLOW QUERY (' . $q[1] . 's): ' . $q[0]);
        }
    }
});


После этого обновляем любую страницу сайта.

Все медленные запросы будут записаны в файл:

Ваш_сайт/wp-content/debug.log
Данный код в functions.php создает в директории wp-content файл debug.log и все туда пишет

То есть этот простой трюк создаёт лог-файл debug.log прямо в директории wp-content, куда WordPress автоматически пишет все SQL-запросы, которые занимают больше 0.05 секунды.

Открывая лог, мы видим:

  • какие запросы повторяются
  • из каких файлов они вызываются
  • какие плагины или шаблоны замедляют сайт

У меня лично таких медленных запросов было тысячи — это и есть причина, почему сайт грузился 6 секунд и создавал колоссальную нагрузку на сервер.

Теперь у нас есть полная картина того, что делает WordPress при генерации страницы, какие SQL-запросы реально тормозят сайт и где искать узкие места.

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

Мой лог файл (разверните чтобы посмотреть)

02-Jan-2026 08:35:54 UTC] [SQL] 0.00012s | SELECT * FROM wp_posts WHERE ID = 557699 LIMIT 1 [02-Jan-2026 08:35:54 UTC] [SQL] 0.00013s | SELECT * FROM wp_posts WHERE ID = 557699 LIMIT 1 [02-Jan-2026 08:35:54 UTC] [SQL] 0.00012s | SELECT * FROM wp_posts WHERE ID = 557699 LIMIT 1 [02-Jan-2026 08:35:54 UTC] [SQL] 0.00022s | SELECT * FROM wp_posts WHERE ID = 557692 LIMIT 1 [02-Jan-2026 08:35:54 UTC] [SQL] 0.00013s | SELECT * FROM wp_posts WHERE ID = 557692 LIMIT 1 [02-Jan-2026 08:35:54 UTC] [SQL] 0.00012s | SELECT * FROM wp_posts WHERE ID = 557692 LIMIT 1 [02-Jan-2026 08:35:54 UTC] [SQL] 0.00011s | SELECT * FROM wp_posts WHERE ID = 557692 LIMIT 1 [02-Jan-2026 08:35:54 UTC] [SQL] 0.00011s | SELECT * FROM wp_posts WHERE ID = 557692 LIMIT 1 [02-Jan-2026 08:35:54 UTC] [SQL] 0.00011s | SELECT * FROM wp_posts WHERE ID = 557692 LIMIT 1 [02-Jan-2026 08:35:54 UTC] [SQL] 0.00016s | SELECT * FROM wp_posts WHERE ID = 557684 LIMIT 1 [02-Jan-2026 08:35:54 UTC] [SQL] 0.00012s | SELECT * FROM wp_posts WHERE ID = 557684 LIMIT 1 [02-Jan-2026 08:35:54 UTC] [SQL] 0.00011s | SELECT * FROM wp_posts WHERE ID = 557684 LIMIT 1 [02-Jan-2026 08:35:54 UTC] [SQL] 0.00011s | SELECT * FROM wp_posts WHERE ID = 557684 LIMIT 1 [02-Jan-2026 08:35:54 UTC] [SQL] 0.00011s | SELECT * FROM wp_posts WHERE ID = 557684 LIMIT 1 [02-Jan-2026 08:35:54 UTC] [SQL] 0.00015s | SELECT * FROM wp_posts WHERE ID = 557684 LIMIT 1 [02-Jan-2026 08:35:54 UTC] [SQL] 0.00034s | SELECT * FROM wp_posts WHERE ID = 404454 LIMIT 1 [02-Jan-2026 08:35:54 UTC] [SQL] 0.00019s | SELECT * FROM wp_posts WHERE ID = 404454 LIMIT 1 [02-Jan-2026 08:35:54 UTC] [SQL] 0.00085s | SELECT user_id, meta_key, meta_value FROM wp_usermeta WHERE user_id IN (1) ORDER BY umeta_id ASC [02-Jan-2026 08:35:54 UTC] [SQL] 0.00031s | SELECT * FROM wp_users WHERE ID IN (1) [02-Jan-2026 08:35:54 UTC] [SQL] 0.00089s | SELECT t.term_id FROM wp_terms AS t INNER JOIN wp_term_taxonomy AS tt ON t.term_id = tt.term_id WHERE tt.taxonomy IN (‘category’) AND tt.parent = ‘0’ ORDER BY t.name ASC [02-Jan-2026 08:35:54 UTC] [SQL] 0.00042s | SELECT post_id, meta_key, meta_value FROM wp_postmeta WHERE post_id IN (558152) ORDER BY meta_id ASC [02-Jan-2026 08:35:54 UTC] [SQL] 0.00422s | SELECT SQL_CALC_FOUND_ROWS wp_posts.ID FROM wp_posts LEFT JOIN wp_term_relationships ON (wp_posts.ID = wp_term_relationships.object_id) WHERE 1=1 AND wp_posts.ID NOT IN (404455) AND ( wp_term_relationships.term_taxonomy_id IN (137) ) AND wp_posts.post_type = ‘post’ AND ((wp_posts.post_status = ‘publish’)) GROUP BY wp_posts.ID ORDER BY wp_posts.post_date DESC LIMIT 0, 5 [02-Jan-2026 08:35:54 UTC] [SQL] 0.0001s | SELECT FOUND_ROWS() [02-Jan-2026 08:35:54 UTC] [SQL] 0.00028s | SELECT * FROM wp_posts WHERE ID = 557706 LIMIT 1 [02-Jan-2026 08:35:54 UTC] [SQL] 0.0002s | SELECT * FROM wp_posts WHERE ID = 557706 LIMIT 1 [02-Jan-2026 08:35:54 UTC] [SQL] 0.00031s | SELECT * FROM wp_posts WHERE ID = 557706 LIMIT 1 [02-Jan-2026 08:35:54 UTC] [SQL] 0.00019s | SELECT * FROM wp_posts WHERE ID = 557706 LIMIT 1 [02-Jan-2026 08:35:54 UTC] [SQL] 0.00017s | SELECT * FROM wp_posts WHERE ID = 557706 LIMIT 1 [02-Jan-2026 08:35:54 UTC] [SQL] 0.00017s | SELECT * FROM wp_posts WHERE ID = 557706 LIMIT 1 [02-Jan-2026 08:35:54 UTC] [SQL] 0.0003s | SELECT * FROM wp_posts WHERE ID = 557699 LIMIT 1 [02-Jan-2026 08:35:54 UTC] [SQL] 0.00019s | SELECT * FROM wp_posts WHERE ID = 557699 LIMIT 1 [02-Jan-2026 08:35:54 UTC] [SQL] 0.00031s | SELECT * FROM wp_posts WHERE ID = 557699 LIMIT 1 [02-Jan-2026 08:35:54 UTC] [SQL] 0.00022s | SELECT * FROM wp_posts WHERE ID = 557699 LIMIT 1 [02-Jan-2026 08:35:54 UTC] [SQL] 0.00019s | SELECT * FROM wp_posts WHERE ID = 557699 LIMIT 1 [02-Jan-2026 08:35:54 UTC] [SQL] 0.00017s | SELECT * FROM wp_posts WHERE ID = 557699 LIMIT 1 [02-Jan-2026 08:35:54 UTC] [SQL] 0.00028s | SELECT * FROM wp_posts WHERE ID = 557692 LIMIT 1 [02-Jan-2026 08:35:54 UTC] [SQL] 0.00019s | SELECT * FROM wp_posts WHERE ID = 557692 LIMIT 1 [02-Jan-2026 08:35:54 UTC] [SQL] 0.00015s | SELECT * FROM wp_posts WHERE ID = 557692 LIMIT 1 [02-Jan-2026 08:35:54 UTC] [SQL] 0.00012s | SELECT * FROM wp_posts WHERE ID = 557692 LIMIT 1 [02-Jan-2026 08:35:54 UTC] [SQL] 0.00012s | SELECT * FROM wp_posts WHERE ID = 557692 LIMIT 1 [02-Jan-2026 08:35:54 UTC] [SQL] 0.00012s | SELECT * FROM wp_posts WHERE ID = 557692 LIMIT 1 [02-Jan-2026 08:35:54 UTC] PHP Deprecated: Automatic conversion of false to array is deprecated in /home/m/mamama1w/rus-bel.online/public_html/wp-content/plugins/td-composer/legacy/common/wp_booster/td_module.php on line 380 [02-Jan-2026 08:35:54 UTC] [SQL] 0.00013s | SELECT * FROM wp_posts WHERE ID = 557684 LIMIT 1 [02-Jan-2026 08:35:54 UTC] [SQL] 0.00012s | SELECT * FROM wp_posts WHERE ID = 557684 LIMIT 1 [02-Jan-2026 08:35:54 UTC] [SQL] 0.00012s | SELECT * FROM wp_posts WHERE ID = 557684 LIMIT 1 [02-Jan-2026 08:35:54 UTC] [SQL] 0.00012s | SELECT * FROM wp_posts WHERE ID = 557684 LIMIT 1 [02-Jan-2026 08:35:54 UTC] [SQL] 0.00012s | SELECT * FROM wp_posts WHERE ID = 557684 LIMIT 1 [02-Jan-2026 08:35:54 UTC] [SQL] 0.00012s | SELECT * FROM wp_posts WHERE ID = 557684 LIMIT 1 [02-Jan-2026 08:35:54 UTC] [SQL] 0.00023s | SELECT option_value FROM wp_options WHERE option_name = ‘saswp_collection_display_opt’ LIMIT 1 [02-Jan-2026 08:35:54 UTC] [SQL] 0.00039s | SELECT * FROM wp_users WHERE user_email = ‘#’ LIMIT 1 [02-Jan-2026 08:35:54 UTC] [SQL] 0.00022s | SELECT * FROM wp_users WHERE user_email = ‘#’ LIMIT 1 [02-Jan-2026 08:35:54 UTC] [SQL] 0.00023s | SELECT * FROM wp_users WHERE user_email = ‘#’ LIMIT 1 [02-Jan-2026 08:35:54 UTC] [SQL] 0.0002s | SELECT * FROM wp_users WHERE user_email = ‘#’ LIMIT 1 [02-Jan-2026 08:35:54 UTC] [SQL] 0.00024s | SELECT * FROM wp_comments WHERE comment_ID = 1 LIMIT 1 [02-Jan-2026 08:35:54 UTC] [SQL] 0.00021s | SELECT * FROM wp_users WHERE user_email = ‘#’ LIMIT 1 [02-Jan-2026 08:35:54 UTC] [SQL] 0.00019s | SELECT * FROM wp_users WHERE user_email = ‘#’ LIMIT 1 [02-Jan-2026 08:35:54 UTC] [SQL] 0.00018s | SELECT * FROM wp_users WHERE user_email = ‘#’ LIMIT 1 [02-Jan-2026 08:35:54 UTC] [SQL] 0.00019s | SELECT * FROM wp_users WHERE user_email = ‘#’ LIMIT 1 [02-Jan-2026 08:35:54 UTC] [SQL] 0.00021s | SELECT * FROM wp_comments WHERE comment_ID = 2 LIMIT 1 [02-Jan-2026 08:35:54 UTC] [SQL] 0.00051s | SELECT SQL_CALC_FOUND_ROWS wp_comments.comment_ID FROM wp_comments WHERE ( comment_approved = ‘1’ ) AND comment_post_ID = 404455 AND comment_type NOT IN (‘note’) AND comment_parent = 0 ORDER BY wp_comments.comment_date_gmt ASC, wp_comments.comment_ID ASC [02-Jan-2026 08:35:54 UTC] [SQL] 0.0669s | SELECT SQL_CALC_FOUND_ROWS wp_posts.ID FROM wp_posts WHERE 1=1 AND wp_posts.ID NOT IN (404455) AND wp_posts.post_type = ‘post’ AND ((wp_posts.post_status = ‘publish’)) ORDER BY wp_posts.post_date DESC LIMIT 0, 1 [02-Jan-2026 08:35:54 UTC] [SQL] 9.0E-5s | SELECT FOUND_ROWS() [02-Jan-2026 08:35:54 UTC] [SQL] 0.06598s | SELECT SQL_CALC_FOUND_ROWS wp_posts.ID FROM wp_posts WHERE 1=1 AND wp_posts.ID NOT IN (404455) AND wp_posts.post_type = ‘post’ AND ((wp_posts.post_status = ‘publish’)) ORDER BY wp_posts.post_date DESC LIMIT 1, 4 [02-Jan-2026 08:35:54 UTC] [SQL] 0.00012s | SELECT FOUND_ROWS() [02-Jan-2026 08:35:54 UTC] [SQL] 0.00031s | SELECT * FROM wp_posts WHERE ID = 557699 LIMIT 1 [02-Jan-2026 08:35:54 UTC] [SQL] 0.0002s | SELECT * FROM wp_posts WHERE ID = 557699 LIMIT 1 [02-Jan-2026 08:35:54 UTC] [SQL] 0.00018s | SELECT * FROM wp_posts WHERE ID = 557699 LIMIT 1 [02-Jan-2026 08:35:54 UTC] [SQL] 0.00017s | SELECT * FROM wp_posts WHERE ID = 557699 LIMIT 1 [02-Jan-2026 08:35:54 UTC] [SQL] 0.00017s | SELECT * FROM wp_posts WHERE ID = 557699 LIMIT 1 [02-Jan-2026 08:35:54 UTC] [SQL] 0.00016s | SELECT * FROM wp_posts WHERE ID = 557699 LIMIT 1 [02-Jan-2026 08:35:54 UTC] [SQL] 0.00027s | SELECT * FROM wp_posts WHERE ID = 557692 LIMIT 1 [02-Jan-2026 08:35:54 UTC] [SQL] 0.00021s | SELECT * FROM wp_posts WHERE ID = 557692 LIMIT 1 [02-Jan-2026 08:35:54 UTC] [SQL] 0.00033s | SELECT * FROM wp_posts WHERE ID = 557692 LIMIT 1 [02-Jan-2026 08:35:54 UTC] [SQL] 0.00021s | SELECT * FROM wp_posts WHERE ID = 557692 LIMIT 1 [02-Jan-2026 08:35:54 UTC] [SQL] 0.00019s | SELECT * FROM wp_posts WHERE ID = 557692 LIMIT 1 [02-Jan-2026 08:35:54 UTC] [SQL] 0.00019s | SELECT * FROM wp_posts WHERE ID = 557692 LIMIT 1 [02-Jan-2026 08:35:54 UTC] [SQL] 0.0003s | SELECT * FROM wp_posts WHERE ID = 557684 LIMIT 1 [02-Jan-2026 08:35:54 UTC] [SQL] 0.00019s | SELECT * FROM wp_posts WHERE ID = 557684 LIMIT 1 [02-Jan-2026 08:35:54 UTC] [SQL] 0.00027s | SELECT * FROM wp_posts WHERE ID = 557684 LIMIT 1 [02-Jan-2026 08:35:54 UTC] [SQL] 0.00019s | SELECT * FROM wp_posts WHERE ID = 557684 LIMIT 1 [02-Jan-2026 08:35:54 UTC] [SQL] 0.00018s | SELECT * FROM wp_posts WHERE ID = 557684 LIMIT 1 [02-Jan-2026 08:35:54 UTC] [SQL] 0.00017s | SELECT * FROM wp_posts WHERE ID = 557684 LIMIT 1

🔥 Разбираем лог файл и ищем причину тормозов

Сайт тормозит НЕ из-за медленных запросов, а из-за ИХ КОЛИЧЕСТВА И ПОВТОРЕНИЙ.

N+1 queries + повторные SELECT по одному и тому же post_id
❌ td-composer дергает get_post() и get_post_meta() десятки раз
❌ нет нормального object cache
❌ отсутствующие/битые данные (миниатюры) усугубляют ситуацию


1️⃣ Проблема – ПОВТОРЫ

Смотрим внимательно:

SELECT * FROM wp_posts WHERE ID = 557699 LIMIT 1

это повторяется 6–7 раз подряд
То же самое для:

  • 557692
  • 557684
  • 557706

📌 Это ОДИН И ТОТ ЖЕ ПОСТ, но:

  • каждый модуль темы
  • каждый блок
  • каждый вызов td_module

делает НОВЫЙ SQL, вместо использования кеша.

👉 Это 100% проблема темы / билдера темы шаблона (в моем шаблоне используется tagDiv Opt-In Builder ), не БД.


2️⃣ проблема – ЭТО НЕ «МЕДЛЕННЫЕ» ЗАПРОСЫ, А ИХ МАССА

Отдельный запрос:

0.00012s

— это очень быстро.

Но когда их:

  • 2000
  • 4000
  • 6000

👉 суммарно это секунды CPU + PHP, даже если MySQL быстрый.


3️⃣ проблема – SQL_CALC_FOUND_ROWS (ВТОРОЙ КЛЮЧЕВОЙ ВРАГ)

Примеры из лога:

SELECT SQL_CALC_FOUND_ROWS wp_posts.ID
FROM wp_posts
ORDER BY wp_posts.post_date DESC
LIMIT 0, 1
SELECT SQL_CALC_FOUND_ROWS wp_posts.ID
FROM wp_posts
ORDER BY wp_posts.post_date DESC
LIMIT 1, 4

📌 SQL_CALC_FOUND_ROWS:

  • официально признан медленным
  • deprecated в MySQL 8
  • WordPress до сих пор его использует
  • tagDiv злоупотребляет

👉 На большом количестве записей это “ад” для хостинга.


4️⃣ проблема – wp_postmeta и миниатюры (отсутствие миниатюр)

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

Есть запрос:

SELECT post_id, meta_key, meta_value
FROM wp_postmeta
WHERE post_id IN (558152)

И одновременно:

PHP Deprecated: Automatic conversion of false to array
td_module.php on line 380

📌 Это означает:

  • td-composer ожидает массив meta
  • получает false (нет миниатюры / данных)
  • дальше пытается работать как с массивом
  • PHP ругается
  • код идёт дальше и делает новые запросы

5️⃣ проблема – ЛИШНИЕ ЗАПРОСЫ К wp_users И wp_comments

Примеры:

SELECT * FROM wp_users WHERE user_email = '#'
SELECT * FROM wp_comments WHERE comment_ID = 1

📌 Это:

  • либо комментарий-модуль
  • либо SEO-плагин
  • либо theme helper

Но они вторичны (хотя по новым законам и правилам РКН о персональных данных вообще отключил комментарии), но основная нагрузка как мы понимаем все равно не тут.


🎯 РЕАЛЬНЫЕ ПРИЧИНЫ ТОРМОЗОВ (итог)

  • ❌ НЕ сервер
  • ❌ НЕ MySQL
  • ❌ НЕ PHP версия
  • ❌ НЕ количество статей напрямую
  • ✅ td-composer + повторные запросы + отсутствие кеша + отсутствие миниатюр

Как на wordpress удалить и заменить все миниатюры

Самое первое что сделаем это исправим проблему с наличием миниатюр на сайте

тут можно решить вопрос быстро и просто (как я люблю)

для этого надо нужно:

  1. картинка заглушка для всех картинок – скачать я взял картинку формата webp в 5кб она как раз не грузит сильно сервер и смотрится оригинально
  2. доступ к phpmyadmin для запуска скрипта

Загружаем заглушку на сайт

нам нужно загрузить нашу заглушку на сайт , далее открываем ее и наводим кнопку мыши на пункт – Изменить другие детали и увидите ссылку на картинку с нужным нам id

Почему сайт тормозит и долго загружается? - расскажу и покажу как пошагово найти причину медленной загрузки сайта на примере wordpress

Запускаем скрипт по замене всех миниатюр WordPress

Теперь когда мы знает id нашей картинки (в моем случае это 558166) меняем в скрипте

UPDATE wp_postmeta pm
LEFT JOIN wp_posts p ON pm.meta_value = p.ID
SET pm.meta_value = 11111111
WHERE pm.meta_key = '_thumbnail_id'
AND p.ID IS NULL;
11111111 на 558166 и запускаем скрипт

после запуска обновляем страницу и смотрим количество запросов

🎯 Отчет по скорости

на удивление после таких манипуляций запросов уменьшилось на процентов 30%

<!-- TIME: 4,493 --> 
<!-- QUERIES: 4288 -->

но все равно очень много!

Как уменьшить количество запросов в базу данных

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

Логи запросов к базе данных

[02-Jan-2026 09:32:41 UTC] [SQL] 0.00044s | SELECT t., tt. FROM wp_terms AS t INNER JOIN wp_term_taxonomy AS tt ON t.term_id = tt.term_id WHERE t.term_id IN (716,590,1610,611,140,344,918,383,5,1484,2218,1990,1839)
[02-Jan-2026 09:32:41 UTC] [SQL] 0.00031s | SELECT t.term_id
FROM wp_terms AS t INNER JOIN wp_term_taxonomy AS tt ON t.term_id = tt.term_id
WHERE tt.taxonomy IN (‘category’) AND t.term_id IN ( 846 )

[02-Jan-2026 09:32:41 UTC] [SQL] 0.00842s | SELECT SQL_CALC_FOUND_ROWS wp_posts.ID
FROM wp_posts LEFT JOIN wp_term_relationships ON (wp_posts.ID = wp_term_relationships.object_id)
WHERE 1=1 AND (
wp_term_relationships.term_taxonomy_id IN (846)
) AND wp_posts.post_type = ‘post’ AND ((wp_posts.post_status = ‘publish’))
GROUP BY wp_posts.ID
ORDER BY wp_posts.post_date DESC
LIMIT 0, 5
[02-Jan-2026 09:32:41 UTC] [SQL] 0.00023s | SELECT wp_posts.* FROM wp_posts WHERE ID IN (556860,553532,553433,552167,552099)
[02-Jan-2026 09:32:41 UTC] [SQL] 0.00042s | SELECT post_id, meta_key, meta_value FROM wp_postmeta WHERE post_id IN (556860,553532,553433,552167,552099) ORDER BY meta_id ASC
[02-Jan-2026 09:32:41 UTC] [SQL] 0.00056s | SELECT DISTINCT t.term_id, tr.object_id
FROM wp_terms AS t INNER JOIN wp_term_taxonomy AS tt ON t.term_id = tt.term_id INNER JOIN wp_term_relationships AS tr ON tr.term_taxonomy_id = tt.term_taxonomy_id
WHERE tt.taxonomy IN (‘category’, ‘post_tag’, ‘post_format’) AND tr.object_id IN (556860, 553532, 553433, 552167, 552099)
ORDER BY t.name ASC

[02-Jan-2026 09:32:41 UTC] [SQL] 0.00035s | SELECT t., tt. FROM wp_terms AS t INNER JOIN wp_term_taxonomy AS tt ON t.term_id = tt.term_id WHERE t.term_id IN (144,69,768,534,1160,220,931,436,606,1802,837,459)
[02-Jan-2026 09:32:41 UTC] [SQL] 0.00023s | SELECT t.term_id
FROM wp_terms AS t INNER JOIN wp_term_taxonomy AS tt ON t.term_id = tt.term_id
WHERE tt.taxonomy IN (‘category’) AND t.term_id IN ( 173 )

[02-Jan-2026 09:32:41 UTC] [SQL] 0.00502s | SELECT SQL_CALC_FOUND_ROWS wp_posts.ID
FROM wp_posts LEFT JOIN wp_term_relationships ON (wp_posts.ID = wp_term_relationships.object_id)
WHERE 1=1 AND (
wp_term_relationships.term_taxonomy_id IN (173)
) AND wp_posts.post_type = ‘post’ AND ((wp_posts.post_status = ‘publish’))
GROUP BY wp_posts.ID
ORDER BY wp_posts.post_date DESC
LIMIT 0, 5
[02-Jan-2026 09:32:41 UTC] [SQL] 0.00027s | SELECT wp_posts.* FROM wp_posts WHERE ID IN (553840,553413,553334,552703,552511)
[02-Jan-2026 09:32:41 UTC] [SQL] 0.00043s | SELECT post_id, meta_key, meta_value FROM wp_postmeta WHERE post_id IN (553840,553413,553334,552703,552511) ORDER BY meta_id ASC
[02-Jan-2026 09:32:41 UTC] [SQL] 0.00047s | SELECT DISTINCT t.term_id, tr.object_id
FROM wp_terms AS t INNER JOIN wp_term_taxonomy AS tt ON t.term_id = tt.term_id INNER JOIN wp_term_relationships AS tr ON tr.term_taxonomy_id = tt.term_taxonomy_id
WHERE tt.taxonomy IN (‘category’, ‘post_tag’, ‘post_format’) AND tr.object_id IN (553840, 553413, 553334, 552703, 552511)
ORDER BY t.name ASC

[02-Jan-2026 09:32:41 UTC] [SQL] 0.0003s | SELECT t., tt. FROM wp_terms AS t INNER JOIN wp_term_taxonomy AS tt ON t.term_id = tt.term_id WHERE t.term_id IN (1541,682,2203,2223,1828,1115)
[02-Jan-2026 09:32:41 UTC] [SQL] 0.00024s | SELECT t.term_id
FROM wp_terms AS t INNER JOIN wp_term_taxonomy AS tt ON t.term_id = tt.term_id
WHERE tt.taxonomy IN (‘category’) AND t.term_id IN ( 124 )

[02-Jan-2026 09:32:41 UTC] [SQL] 0.00255s | SELECT SQL_CALC_FOUND_ROWS wp_posts.ID
FROM wp_posts LEFT JOIN wp_term_relationships ON (wp_posts.ID = wp_term_relationships.object_id)
WHERE 1=1 AND (
wp_term_relationships.term_taxonomy_id IN (124)
) AND wp_posts.post_type = ‘post’ AND ((wp_posts.post_status = ‘publish’))
GROUP BY wp_posts.ID
ORDER BY wp_posts.post_date DESC
LIMIT 0, 5
[02-Jan-2026 09:32:41 UTC] [SQL] 0.00023s | SELECT wp_posts.* FROM wp_posts WHERE ID IN (556954,552520,550588,533655,516823)
[02-Jan-2026 09:32:41 UTC] [SQL] 0.00042s | SELECT post_id, meta_key, meta_value FROM wp_postmeta WHERE post_id IN (556954,552520,550588,533655,516823) ORDER BY meta_id ASC
[02-Jan-2026 09:32:41 UTC] [SQL] 0.00066s | SELECT DISTINCT t.term_id, tr.object_id
FROM wp_terms AS t INNER JOIN wp_term_taxonomy AS tt ON t.term_id = tt.term_id INNER JOIN wp_term_relationships AS tr ON tr.term_taxonomy_id = tt.term_taxonomy_id
WHERE tt.taxonomy IN (‘category’, ‘post_tag’, ‘post_format’) AND tr.object_id IN (556954, 552520, 550588, 533655, 516823)
ORDER BY t.name ASC

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

не буду ходить вокруг да около , в шаблоне в меню была включена функция Мега меню и каждое меню при обновлении страницы запрашивало из БД страницы и это сильно грузило сайт

Почему сайт тормозит и долго загружается? - расскажу и покажу как пошагово найти причину медленной загрузки сайта на примере wordpress

в итоге после отключения сия “чуда” на сайте стала такая ситуация

🎯 Отчет по скорости после оптимизации Мегаменю

<!-- TIME: 1,433 -->
<!-- QUERIES: 124 -->

Вы это и сами сейчас можете посмотреть на сайт, ссылка выше.

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

Если появятся вопросы — пишите в комментариях к статье или заходите в мою ТГ-группу https://t.me/NibblitClub, где мы с моим сообществом будем помогать разбирать ваши ситуации.

Виталий nibbl

Привет 👋 Меня зовут Виталий, в сети я известен как Виталий Nibbl. С 2009 года я в IT и люблю задачки, от которых у других опускаются руки. Если вам сказали, что - "это невозможно" — значит, вы просто ещё не обратились ко мне 😎 В моих блогах на YouTube и Telegram вы найдёте пошаговые инструкции и решения любых сложностей. А ещё я профессионально скачиваю видео с любых платформ и всегда на связи по IT-вопросам.

Оцените автора
NIBBL
Добавить комментарий

Нажимая на кнопку "Отправить комментарий", я даю согласие на обработку персональных данных и принимаю политику конфиденциальности.