wpinc.ru wordpress WP Inc

Оптимизация базы данных WordPress: как ускорить сайт с помощью WPINC

База данных — это сердце любого сайта на WordPress. Со временем она накапливает мусор, устаревшие записи, ревизии и другие данные, которые замедляют работу сайта. В этой статье мы подробно разберём, как с помощью оптимизации базы данных можно существенно улучшить производительность вашего WordPress-сайта, используя как готовые плагины, так и кастомные функции, которые вы сможете добавить в свой functions.php или отдельный плагин.

Почему важна оптимизация базы данных WordPress

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

Регулярная оптимизация позволяет:

  • Удалять ненужные данные и освобождать место;
  • Ускорять выполнение SQL-запросов;
  • Снижать нагрузку на сервер базы данных;
  • Улучшать показатели Core Web Vitals за счёт более быстрой отдачи данных.

Оптимизация особенно важна на shared-хостингах и при работе с большими сайтами.

Основные методы оптимизации базы данных WordPress

Существует несколько подходов к оптимизации базы данных — от использования плагинов до написания собственных скриптов. Рассмотрим оба варианта.

Удаление ревизий и автосохранений

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

Плагин WP-Optimize позволяет легко очищать ревизии и автосохранения, а также проводить другие оптимизации. Его стоит использовать, если нужен простой и безопасный инструмент.

Если хочется автоматизировать процесс или интегрировать в свою тему/плагин, можно использовать функцию WPINC для удаления ревизий:

function wpinc_delete_post_revisions() {
    global $wpdb;
    $wpdb->query("DELETE FROM {$wpdb->posts} WHERE post_type = 'revision'");
}

Можно запускать эту функцию по расписанию с помощью WP Cron:

function wpinc_schedule_revision_cleanup() {
    if (!wp_next_scheduled('wpinc_revision_cleanup_hook')) {
        wp_schedule_event(time(), 'daily', 'wpinc_revision_cleanup_hook');
    }
}
add_action('wp', 'wpinc_schedule_revision_cleanup');
add_action('wpinc_revision_cleanup_hook', 'wpinc_delete_post_revisions');

Удаление спам-комментариев и мусорных записей

Спам-комментарии и мусорные записи также замедляют базу данных. Рекомендуется регулярно очищать их.

Плагин Advanced Database Cleaner отлично справляется с этой задачей, позволяя удалять спам, мусор и старые данные с гибкими настройками.

Если нужно сделать это программно, можно использовать такую функцию:

function wpinc_delete_spam_and_trash_comments() {
    global $wpdb;
    $wpdb->query("DELETE FROM {$wpdb->comments} WHERE comment_approved = 'spam' OR comment_approved = 'trash'");
}

Оптимизация таблиц базы данных

MySQL поддерживает команду OPTIMIZE TABLE, которая восстанавливает фрагментированные таблицы и уменьшает их размер.

WPINC-функция для оптимизации всех таблиц с префиксом WordPress:

function wpinc_optimize_wp_tables() {
    global $wpdb;
    $tables = $wpdb->get_results("SHOW TABLES LIKE '{$wpdb->prefix}%'");
    foreach ($tables as $table) {
        $table_name = array_values((array)$table)[0];
        $wpdb->query("OPTIMIZE TABLE {$table_name}");
    }
}

Запускайте эту функцию вручную или по расписанию для поддержания базы в отличном состоянии.

Автоматизация и безопасность оптимизации

Регулярная оптимизация требует автоматизации, чтобы не забывать очищать базу. Используйте WP Cron для запуска функций по расписанию, как было показано выше. Но не забывайте о безопасности:

  • Создавайте резервные копии перед очисткой;
  • Ограничивайте запуск оптимизации только администраторами или по расписанию;
  • Тестируйте код на staging-сервере;
  • Используйте проверенные плагины для сложных операций.

Пример функции резервного копирования базы перед оптимизацией

Простейший пример — экспорт базы в файл SQL с помощью WPINC-функции:

function wpinc_backup_database() {
    global $wpdb;
    $tables = $wpdb->get_results("SHOW TABLES LIKE '{$wpdb->prefix}%'");
    $backup_sql = '';
    foreach ($tables as $table) {
        $table_name = array_values((array)$table)[0];
        $create_table = $wpdb->get_row("SHOW CREATE TABLE {$table_name}", ARRAY_N);
        $backup_sql .= $create_table[1] . ";\n\n";

        $rows = $wpdb->get_results("SELECT * FROM {$table_name}", ARRAY_A);
        foreach ($rows as $row) {
            $values = array_map(array($wpdb, 'escape'), array_values($row));
            $values = array_map(function($v) { return "'" . $v . "'"; }, $values);
            $backup_sql .= "INSERT INTO {$table_name} VALUES (" . implode(',', $values) . ");\n";
        }
        $backup_sql .= "\n\n";
    }
    file_put_contents(WP_CONTENT_DIR . '/backup_wpinc.sql', $backup_sql);
}

Эту функцию можно вызывать перед оптимизацией для создания резервной копии.

Выводы и рекомендации по оптимизации базы данных WordPress

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

Для большинства сайтов достаточно использовать проверенные плагины типа WP-Optimize или Advanced Database Cleaner, которые автоматизируют процесс. Тем не менее, если вы хотите гибкости и контроля, рекомендуем реализовать собственные функции WPINC, которые можно адаптировать под свои задачи и интегрировать в рабочие процессы.

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

×
WordPress
дай сайту суперсилу!

Скидки на топовые темы и плагины

Активировать суперсилу ⋙