If you’re reading this, you’re likely tired of the standardowych porad dotyczących wydajności WordPressa. The usual routine—installing WP Rocket, adding an image optimizer plugin, and throwing in an asset manager—often leads to a paradox: instalujesz wtyczki, aby przyspieszyć witrynę, ale same wtyczki zwiększają obciążenie bazy danych, dodają zadania cron w tle i własne pakiety 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.
W tym przewodniku całkowicie pominiemy ekosystem wtyczek. Zoptymalizujemy WordPressa przy użyciu konfiguracji po stronie serwera, wp-config.php dostosowań i chirurgicznych functions.php fragmentów kodu.
1. Fundament po stronie serwera (nie wymaga PHP)
Zanim dotkniesz choćby jednej linii kodu WordPressa, środowisko serwera musi być mocno zoptymalizowane. Słabego serwera nie naprawi buforowanie front-endu.
Aktualizacja do PHP 8.1+
WordPress działa na PHP. Przejście z PHP 7.4 na PHP 8.1 lub 8.2 może przynieść 20-30% redukcji czasu wykonywania i znacznie mniejsze zużycie pamięci. Działanie: Zmień to w swoim cPanelu, Plesku lub przez CLI, jeśli zarządzasz własnym VPS.
Włącz kompresję na poziomie serwera (Brotli zamiast Gzip)
Podczas gdy Gzip jest standardem, Brotli (opracowany przez Google) zapewnia około 15-20% lepsze współczynniki kompresji dla plików tekstowych (HTML, CSS, JS) przy tym samym koszcie procesora. Działanie (Nginx): Upewnij się, że Twój nginx.conf ma włączone Brotli:
brotli on;
brotli_comp_level 6;
brotli_types text/plain text/css application/javascript application/json image/svg+xml;
Wdróż buforowanie FastCGI (Nginx) lub LiteSpeed Cache
Zamiast używać wtyczki do buforowania opartej na PHP (która nadal wymaga częściowego załadowania WordPressa w celu obsłużenia pamięci podręcznej), buforuj na poziomie serwera WWW. Buforowanie Nginx FastCGI przechowuje wygenerowany kod HTML w pamięci RAM lub na dysku i serwuje go bezpośrednio, całkowicie pomijając PHP i MySQL dla anonimowych odwiedzających.
2. Wzmacnianie i odchudzanie poprzez wp-config.php
The wp-config.php to Twoje centrum sterowania. Domyślnie WordPress pozwala na pewne zachowania, które z czasem zaśmiecają bazę danych.
Dodaj te fragmenty kodu tuż przed linią /* That's all, stop editing! Happy publishing. */ line.
Ogranicz rewizje wpisów
Domyślnie WordPress przechowuje nieskończoną liczbę rewizji Twoich wpisów. Wpis zaktualizowany 50 razy będzie miał 50 kopii w Twojej wp_posts tabeli bazy danych, co drastycznie spowalnia zapytania do bazy danych.
// Keep only the last 3 revisions
define( 'WP_POST_REVISIONS', 3 );
Zoptymalizuj interwał automatycznego zapisu
WordPress wykonuje automatyczny zapis co 60 sekund. Jeśli pracuje wielu redaktorów, obciąża to bazę danych. Spowolnij to.
// Change autosave from 60 seconds to 5 minutes
define( 'AUTOSAVE_INTERVAL', 300 );
Opróżniaj kosz szybciej
Usunięte wpisy i komentarze pozostają w bazie danych przez 30 dni. Zmniejsz ten czas, aby utrzymać bazę danych w czystości.
// Empty trash every 7 days
define( 'EMPTY_TRASH_DAYS', 7 );
3. The “Anti-Bloat” functions.php „przeciw wzdęciom”
Rdzeń WordPressa domyślnie wstrzykuje ogromną ilość skryptów wsparcia dla starszych wersji, linków odkrywania i stylów inline do Twojego <head> I <footer> domyślnie.
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 lub wtyczki typu mu-plugin.
/**
* 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;
});
Co właśnie osiągnęliśmy?
Dodając powyższy kod, natychmiast wyeliminowałeś do 5-8 niepotrzebnych żądań HTTP and removed dozens of lines of inline CSS/JS from every single page load—all without installing a single plugin.
4. Optymalizacja mediów (trudna droga)
Wtyczki takie jak Smush czy Imagify są wygodne, ale przetwarzają obrazy na Twoim serwerze PHP, zużywając zasoby procesora.
Ręczna konwersja WebP/AVIF
Przed przesłaniem jakiegokolwiek obrazu do WordPressa, przepuść go przez zewnętrzny, bezstratny kompresor, taki jak Squoosh.app (od Google) lub TinyPNG. Co więcej, przekonwertuj je lokalnie na .webp lub .avif formaty przed przesłaniem.
Wykorzystaj natywne leniwe ładowanie (Lazy Loading)
Od wersji WordPress 5.5 natywne leniwe ładowanie jest wbudowane. WordPress automatycznie dodaje 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).
Możesz usunąć leniwe ładowanie dla pierwszego obrazu na stronie poprzez 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. Defragmentacja bazy danych przez phpMyAdmin
Optimization plugins usually feature a “Clean Database” button. You can do this natively at the database level.
- Zaloguj się do panelu hostingowego i otwórz phpMyAdmin.
- Wybierz swoją bazę danych WordPress.
- Przewiń na dół, zaznacz Zaznacz wszystko.
- In the “With selected:” dropdown, choose Optymalizuj tabelę.
MySQL przebuduje indeksy tabeli i odzyska nieużywane miejsce. Rób to ręcznie raz w miesiącu.
Werdykt
Optimizing WordPress without plugins isn’t just about saving money on premium subscriptions. It is a philosophy of redukcji długu technicznego. 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.
Przenieś obciążenie na serwer (PHP 8.1+, Nginx FastCGI), wprowadź dyscyplinę w swoim wp-config.phpi usuń zbędny kod rdzenia za pomocą swojego functions.php. Twój wskaźnik Time to First Byte (TTFB) oraz Core Web Vitals odzwierciedlą tę różnicę.



