Блог · SEO

Database bloat revisions и TTFB в WordPress

Практический разбор database bloat в WordPress revisions, transients, автозагрузка options и влияние на TTFB с быстрой проверкой БД.

~3 мин чтения SEO

Администратор у монитора с графиком размера таблиц wp_posts и TTFB

Почему revisions и transients бьют TTFB

Database bloat в WordPress редко выглядит как «сайт упал». Чаще растёт Time to First Byte на динамических URL, тормозит админка, а кеш лишь маскирует проблему на публичных страницах. Revisions, просроченные transients и тяжёлые строки в wp_options с autoload=yes читаются почти на каждый PHP-запрос.

Если TTFB в PageSpeed Insights или лабораторном тесте стабильно выше 600–800 мс без CDN-задержки сначала проверьте БД, а не только тему. Для SEO это критично потому что медленный старт ответа хуже индексируется на слабых соединениях и хуже конвертирует.

  • Revisions раздувают wp_posts / wp_postmeta и замедляют редакционные запросы.
  • Transients без очистки оставляют тысячи ключей в options или отдельной таблице.
  • Autoload options тянутся в память на каждый front-end hit.

Revisions как контролировать

Экран со списком ревизий поста и счётчиком строк в wp_posts
Каждая ревизия это строка в wp_posts. На больших редакционных сайтах их тысячи.

WordPress по умолчанию хранит все черновики изменений. На каталоге с 5–10 тыс. товаров и ежедневными правками ревизий легко набрать сотни тысяч строк. Практические шаги

  • Ограничьте количество в wp-config.php через WP_POST_REVISIONS (например 5–10).
  • Отключите ревизии для типов контента где история не нужна (часто product без редакционной политики).
  • Периодически чистите старые ревизии WP-CLI (wp post delete $(wp post list --post_type='revision' --format=ids) только после бэкапа) или проверенным плагином.
  • Не трогайте revisions «вслепую» на сайтах с юридически важными изменениями текста без политики retention.

Хак на заметку. В phpMyAdmin выполните SELECT COUNT(*) FROM wp_posts WHERE post_type='revision';. Если число близко или больше количества опубликованных постов в 10–50 раз это красный флаг.

Transients и autoload options

Таблица wp_options с выделенными transient-ключами и autoload=yes
Просроченные transients и тяжёлые autoload options часто незаметны в админке, но читаются на каждый запрос.

Transients удобны для кеша API, но плагины часто пишут ключи без нормального TTL или не удаляют просроченные. Autoload options ещё хуже потому что WordPress подгружает их сразу. Типичные «тяжёлые» авторы analytics-сниппеты в options, мегамассивы настроек конструкторов, устаревшие лицензионные payload.

  • Посчитайте размер autoload SELECT SUM(LENGTH(option_value)) FROM wp_options WHERE autoload IN ('yes','on','auto');
  • Ориентир тревоги свыше 1–2 МБ autoload на среднем сайте, свыше 3–5 МБ почти всегда стоит разбирать.
  • Просроченные transients ищите по _transient_timeout_ с прошедшим timestamp.
  • После удаления лишнего сделайте object cache flush если используете Redis/Memcached.

Как измерить влияние на TTFB

Ноутбук с PageSpeed Insights и Query Monitor рядом с графиком TTFB
Сравнивайте TTFB до и после очистки на одном URL без кеша страницы.

Без измерения «очистка БД» превращается в ритуал. Сделайте базу сравнения

  1. Выберите 3 URL (главная, категория, карточка) и отключите page cache для теста или добавьте cache-buster.
  2. Снимите TTFB в DevTools → Network (поле Waiting) и в PageSpeed lab.
  3. Включите Query Monitor на staging и посмотрите самые медленные SQL и размер options.
  4. После cleanup повторите те же URL в то же время суток.

Если TTFB почти не изменился, а SQL уже легче проблема может быть в PHP, внешних HTTP или хостинге. Тогда bloat был симптомом второго плана, но его всё равно стоит держать под контролем.

Быстрая проверка БД

Чек-лист WP-CLI и phpMyAdmin для revisions, autoload и transients
Быстрая проверка занимает 10–15 минут и сразу показывает есть ли bloat.

Чек-лист на заметку (10–15 минут). Сделайте сейчас

  1. Бэкап БД (хостинг или wp db export).
  2. Посчитайте revisions wp post list --post_type=revision --format=count.
  3. Проверьте размер autoload options (SQL выше) и топ-20 самых тяжёлых ключей.
  4. Найдите просроченные transients и оцените их количество.
  5. Сравните размер таблиц wp_posts, wp_postmeta, wp_options в phpMyAdmin.
  6. Снимите TTFB до изменений на 1–2 money-URL.
  7. В Search Console проверьте нет ли жалоб на server error после работ.
Источник bloat Симптом Действие
Revisions Большой wp_posts, медленное сохранение в редакторе Лимит WP_POST_REVISIONS, плановая очистка
Transients Тысячи ключей _transient_, скачки размера options Удалить expired, починить TTL в плагинах
Autoload options Высокий TTFB даже на простых URL Снять autoload с тяжёлых ключей, разобрать плагин
Orphan postmeta Большой wp_postmeta после импортов Осторожная уборка сирот после аудита

Типичные ошибки

  • Чистить прод без бэкапа и без staging-прогона.
  • Удалять все options с «незнакомыми» именами и сломать лицензии/плагины.
  • Ожидать что database cleanup заменит CDN, OPcache и нормальный хостинг.
  • Оставлять object cache со старыми значениями после изменений в MySQL.
  • Игнорировать повторное накопление потому что корень в плагине который снова пишет гигантские autoload.

Заключение

Database bloat это не абстрактная «гигиена», а прямой рычаг TTFB и стабильности WordPress. Контроль revisions, дисциплина transients и аудит autoload options дают измеримый эффект быстрее чем очередной визуальный редизайн.

Нужен технический SEO-аудит с проверкой скорости ответа команда SEO-Studio поможет в рамках SEO-услуг.