Jeśli to czytasz, prawdopodobnie masz już dość standardowych porad dotyczących wydajności WordPressa. Typowa rutyna — instalacja WP Rocket, dodanie wtyczki do optymalizacji obrazów i menedżera zasobów — często prowadzi do paradoksu: 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.
Prawda jest taka, że WordPress nie potrzebuje 15 wtyczek wydajnościowych, aby załadować się w mniej niż sekundę. Prawdziwa optymalizacja szybkości odbywa się na poziomie podstawowym — serwera, bazy danych i głównego kodu.
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. Główny fragment kodu 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 I domyślnie.
Aby osiągnąć maksymalną przewagę informacyjną nad konkurencją, nie powiemy Ci tylko „użyj wtyczki do odchudzania”. Oto dokładny kod, który chirurgicznie usunie najczęstsze „wzdęcia” WordPressa.
Uwaga: Dodaj to do pliku swojego motywu potomnego 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 i usunąłeś dziesiątki linii kodu CSS/JS inline z każdego ładowania strony – wszystko bez instalowania ani jednej wtyczki.
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" do Twoich obrazów. Nie potrzebujesz wtyczki do leniwego ładowania opartej na JavaScript. Upewnij się jednak, że Twoje obrazy „above the fold” (widoczne bez przewijania, np. logo lub główny obraz) NIE mają tego atrybutu, ponieważ opóźni to wskaźnik 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
Wtyczki optymalizacyjne zazwyczaj posiadają przycisk „Wyczyść bazę danych”. Możesz to zrobić natywnie na poziomie bazy danych.
- Zaloguj się do panelu hostingowego i otwórz phpMyAdmin.
- Wybierz swoją bazę danych WordPress.
- Przewiń na dół, zaznacz Zaznacz wszystko.
- W menu rozwijanym „Zaznaczone:” wybierz Optymalizuj tabelę.
MySQL przebuduje indeksy tabeli i odzyska nieużywane miejsce. Rób to ręcznie raz w miesiącu.
Werdykt
Optymalizacja WordPressa bez wtyczek to nie tylko oszczędność pieniędzy na subskrypcjach premium. To filozofia redukcji długu technicznego. Każda wtyczka, której nie zainstalujesz, to luka w zabezpieczeniach, której nie musisz łatać, tabela w bazie danych, której nie musisz czyścić, oraz skrypt PHP, którego Twój serwer nie musi wykonywać.
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ę.



