Как оптимизировать WordPress для повышения скорости без плагинов (Руководство только для кода)

Опубликовано на | К
6 минут чтения

If you’re reading this, you’re likely tired of the standard WordPress performance advice. The usual routine—installing WP Rocket, adding an image optimizer plugin, and throwing in an asset manager—often leads to a paradox: вы устанавливаете плагины для ускорения вашего сайта, но сами плагины добавляют раздувание базы данных, фоновые задания cron и свои собственные полезные нагрузки CSS/JS.

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

В этом руководстве мы собираемся полностью обойти экосистему плагинов. Мы оптимизируем WordPress, используя конфигурации на стороне сервера, wp-config.php корректировки и хирургические functions.php фрагменты.


1. Серверная основа (PHP не требуется)

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

Обновление до PHP 8.1+

WordPress работает на PHP. Переход с PHP 7.4 на PHP 8.1 или 8.2 может привести к сокращению времени выполнения на 20–30 % и значительному снижению потребления памяти. Действие: Измените это в своей cPanel, Plesk или через CLI, если вы управляете собственным VPS.

Включить сжатие на уровне сервера (Brotli через Gzip)

Хотя Gzip является стандартным, Бротли (разработанный Google) обеспечивает примерно на 15–20 % лучшую степень сжатия текстовых файлов (HTML, CSS, JS) при тех же затратах на процессор. Действие (Nginx): Убедитесь, что ваш nginx.conf включил Бротли:

brotli on;
brotli_comp_level 6;
brotli_types text/plain text/css application/javascript application/json image/svg+xml;

Внедрение кэширования FastCGI (Nginx) или LiteSpeed ​​Cache.

Вместо использования плагина кеширования на основе PHP (который по-прежнему требует частичной загрузки WordPress для обслуживания кеша), кешируйте на уровне веб-сервера. Кэширование Nginx FastCGI сохраняет сгенерированный HTML в оперативной памяти или на диске и обслуживает его напрямую, полностью минуя PHP и MySQL для анонимных посетителей.


2. Закалка и истончение с помощью wp-config.php

The wp-config.php файл — это ваша диспетчерская. По умолчанию WordPress допускает определенные действия, которые со временем раздувают вашу базу данных.

Добавьте эти фрагменты прямо перед /* That's all, stop editing! Happy publishing. */ линия.

Ограничить количество редакций сообщений

По умолчанию WordPress хранит бесконечное количество версий ваших сообщений. Пост, обновленный 50 раз, будет иметь 50 копий в вашем аккаунте. wp_posts таблицу базы данных, что значительно замедляет запросы к базе данных.

// Keep only the last 3 revisions
define( 'WP_POST_REVISIONS', 3 );

Оптимизируйте интервал автосохранения

WordPress автоматически сохраняет каждые 60 секунд. Если у вас работает несколько редакторов, это перегружает базу данных. Замедлите это.

// Change autosave from 60 seconds to 5 minutes
define( 'AUTOSAVE_INTERVAL', 300 );

Выбрасывайте мусор быстрее

Удаленные сообщения и комментарии хранятся в базе данных в течение 30 дней. Уменьшите это значение, чтобы сохранить базу данных компактной.

// Empty trash every 7 days
define( 'EMPTY_TRASH_DAYS', 7 );

3. «Анти-вздутие» functions.php Главный фрагмент

Ядро WordPress добавляет в ваш файл огромное количество устаревших сценариев поддержки, ссылок на обнаружение и встроенных стилей.  и 

 по умолчанию.

Чтобы добиться максимального информационного преимущества над конкурентами, мы не будем просто говорить вам «использовать плагин для деблокирования». Вот точный код для хирургического удаления наиболее распространенных раздутий WordPress.

Примечание. Добавьте это в свою дочернюю тему. functions.php или вставной mu-плагин.

/**
 * The Ultimate WordPress Debloat Snippet
 */
add_action('init', function() {
    // 1. Remove RSD, XMLRPC, and WLW links
    remove_action('wp_head', 'rsd_link');
    remove_action('wp_head', 'wlwmanifest_link');
    add_filter('xmlrpc_enabled', '__return_false');

    // 2. Remove WordPress version footprint (Security & Speed)
    remove_action('wp_head', 'wp_generator');

    // 3. Remove Shortlinks and REST API links from header
    remove_action('wp_head', 'wp_shortlink_wp_head');
    remove_action('wp_head', 'rest_output_link_wp_head');

    // 4. Disable native Emojis (Saves 1 JS and 1 CSS HTTP Request)
    remove_action('wp_head', 'print_emoji_detection_script', 7);
    remove_action('wp_print_styles', 'print_emoji_styles');
    remove_action('admin_print_scripts', 'print_emoji_detection_script');
    remove_action('admin_print_styles', 'print_emoji_styles');
    remove_filter('the_content_feed', 'wp_staticize_emoji');
    remove_filter('comment_text_rss', 'wp_staticize_emoji');
    remove_filter('wp_mail', 'wp_staticize_emoji_for_email');

    // 5. Disable oEmbeds (If you don't embed external URLs automatically)
    remove_action('wp_head', 'wp_oembed_add_discovery_links');
    remove_action('wp_head', 'wp_oembed_add_host_js');
    add_action('wp_footer', function() { wp_deregister_script('wp-embed'); });
});

/**
 * 6. Remove Global Styles (WP 5.9+ Inline CSS Bloat)
 */
add_action('wp_enqueue_scripts', function() {
    wp_dequeue_style('global-styles');
    wp_dequeue_style('classic-theme-styles');
}, 100);

/**
 * 7. Remove jQuery Migrate (If using modern themes/plugins)
 */
add_action('wp_default_scripts', function($scripts) {
    if (!is_admin() && isset($scripts->registered['jquery'])) {
        $script = $scripts->registered['jquery'];
        if ($script->deps) {
            $script->deps = array_diff($script->deps, ['jquery-migrate']);
        }
    }
});

/**
 * 8. Throttle the Heartbeat API
 * Prevents high CPU usage when leaving the WP Admin open
 */
add_filter('heartbeat_settings', function($settings) {
    $settings['interval'] = 60; // Throttle to 60 seconds
    return $settings;
});

Чего мы только что достигли?

Добавив приведенный выше код, вы мгновенно исключили до 5-8 ненужных HTTP-запросов и удалил десятки строк встроенного CSS/JS из каждой загрузки страницы — и все это без установки ни одного плагина.


4. Медиа-оптимизация (трудный путь)

Такие плагины, как Smush или Imagify, удобны, но они выполняют обработку изображений на вашем PHP-сервере, потребляя ресурсы процессора.

Ручное преобразование WebP/AVIF

Прежде чем загружать любое изображение в WordPress, пропустите его через внешний компрессор без потерь, например Squoosh.app (от Google) или КрошечныйPNG. А еще лучше преобразовать их в .webp или .avif форматирует локально перед загрузкой.

Используйте встроенную отложенную загрузку

Начиная с версии WordPress 5.5 встроена встроенная отложенная загрузка. WordPress автоматически добавляет loading="lazy" к вашим изображениям. Вам не нужен плагин отложенной загрузки на основе JavaScript. Однако убедитесь, что ваши изображения «над сгибом» (например, ваш логотип или главное изображение) НЕ имеют этого атрибута, так как это задержит наибольшую содержательную отрисовку (LCP).

Вы можете удалить отложенную загрузку первого изображения на странице с помощью functions.php:

add_filter( 'wp_get_attachment_image_attributes', function( $attr, $attachment, $size ) {
    static $is_first_image = true;
    if ( $is_first_image ) {
        $attr['loading'] = 'eager'; // Force immediate load for LCP
        $is_first_image = false;
    }
    return $attr;
}, 10, 3 );

5. Дефрагментация базы данных через phpMyAdmin.

Плагины оптимизации обычно имеют кнопку «Очистить базу данных». Вы можете сделать это изначально на уровне базы данных.

  1. Войдите в панель хостинга и откройте phpMyAdmin.
  2. Выберите свою базу данных WordPress.
  3. Прокрутите вниз, проверьте Проверить все.
  4. В раскрывающемся списке «С выбранным:» выберите Оптимизировать таблицу.

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


Вердикт

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

Перенесите рабочую нагрузку на сервер (PHP 8.1+, Nginx FastCGI), установите дисциплину в wp-config.phpи отрежьте раздутое ядро ​​с помощью functions.php. Ваше время до первого байта (TTFB) и основные веб-показатели отразят разницу.

Ajay Malik

Аджай Малик — разработчик WordPress и элитный фрилансер с опытом работы более 8 лет.