If you’re reading this, you’re likely tired of the стандартных советов по производительности WordPress. 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-файлы.
The truth is, WordPress doesn’t need 15 performance plugins to load in under a second. True speed optimization happens at the metal layer—the server, the database, and the core code.
В этом руководстве мы полностью обойдем экосистему плагинов. Мы оптимизируем 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 является стандартом, Brotli (разработанный Google) обеспечивает примерно на 15-20% лучшие коэффициенты сжатия для текстовых файлов (HTML, CSS, JS) при тех же затратах ресурсов процессора. Действие (Nginx): Убедитесь, что в вашем nginx.conf включен Brotli:
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. */ line.
Ограничение ревизий записей
По умолчанию 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. The “Anti-Bloat” functions.php Мастер-фрагмент кода
Ядро WordPress по умолчанию внедряет огромное количество устаревших вспомогательных скриптов, ссылок для обнаружения и встроенных стилей в ваш <head> и <footer> by default.
To achieve maximum information gain over competitors, we won’t just tell you to “use a debloat plugin.” Here is the exact code to surgically remove the most common WordPress bloat.
Note: Add this to your Child Theme’s 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-запросов and removed dozens of lines of inline CSS/JS from every single page load—all without installing a single plugin.
4. Оптимизация медиа (сложный путь)
Такие плагины, как Smush или Imagify, удобны, но они выполняют обработку изображений на вашем PHP-сервере, потребляя ресурсы процессора.
Ручное преобразование в WebP/AVIF
Перед загрузкой любого изображения в WordPress пропустите его через внешний компрессор без потерь, такой как Squoosh.app (от Google) или TinyPNG. Еще лучше, конвертируйте их в .webp или .avif форматы локально перед загрузкой.
Использование нативной ленивой загрузки (Lazy Loading)
Начиная с WordPress 5.5, нативная ленивая загрузка встроена. WordPress автоматически добавляет loading="lazy" to your images. You don’t need a JavaScript-based lazy loading plugin. However, ensure your “above the fold” images (like your logo or hero image) DO NOT have this attribute, as it will delay the Largest Contentful Paint (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
Optimization plugins usually feature a “Clean Database” button. You can do this natively at the database level.
- Войдите в панель управления хостингом и откройте phpMyAdmin.
- Выберите вашу базу данных WordPress.
- Прокрутите вниз, отметьте Выбрать все.
- In the “With selected:” dropdown, choose Оптимизировать таблицу.
MySQL перестроит индексы таблиц и вернет неиспользуемое пространство. Делайте это вручную раз в месяц.
Вердикт
Optimizing WordPress without plugins isn’t just about saving money on premium subscriptions. It is a philosophy of сокращения технического долга. Every plugin you don’t install is a security vulnerability you don’t have to patch, a database table you don’t have to clean, and a PHP script your server doesn’t have to execute.
Перенесите рабочую нагрузку на сервер (PHP 8.1+, Nginx FastCGI), обеспечьте дисциплину в своем wp-config.php, и избавьтесь от раздутого ядра с помощью своего functions.php. Время до первого байта (TTFB) и показатели Core Web Vitals отразят эту разницу.



