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: installi plugin per velocizzare il tuo sito, ma i plugin stessi aggiungono ingrossamento del database, cron job in background e i propri payload CSS/JS.
La verità è che WordPress non ha bisogno di 15 plugin di prestazioni per caricarsi in meno di un secondo. La vera ottimizzazione della velocità avviene a livello metal: il server, il database e il codice principale.
In questa guida ignoreremo completamente l’ecosistema dei plugin. Ottimizzeremo WordPress utilizzando configurazioni lato server, wp-config.php aggiustamenti e interventi chirurgici functions.php frammenti.
1. La base lato server (non è richiesto PHP)
Prima di toccare una singola riga di codice WordPress, l’ambiente del tuo server deve essere fortemente ottimizzato. Un server debole non può essere riparato mediante la memorizzazione nella cache front-end.
Aggiorna a PHP 8.1+
WordPress funziona su PHP. Passare da PHP 7.4 a PHP 8.1 o 8.2 può comportare una riduzione del 20-30% del tempo di esecuzione e un consumo di memoria significativamente inferiore. Azione: Modificalo nel tuo cPanel, Plesk o tramite CLI se gestisci il tuo VPS.
Abilita la compressione a livello di server (Brotli su Gzip)
Sebbene Gzip sia standard, Brotli (sviluppato da Google) fornisce rapporti di compressione migliori di circa il 15-20% per i file di testo (HTML, CSS, JS) allo stesso costo della CPU. Azione (Nginx): Assicurati che il tuo nginx.conf ha abilitato Brotli:
brotli on;
brotli_comp_level 6;
brotli_types text/plain text/css application/javascript application/json image/svg+xml;
Implementa la cache FastCGI (Nginx) o la cache LiteSpeed
Invece di utilizzare un plugin di caching basato su PHP (che richiede comunque il caricamento parziale di WordPress per servire la cache), memorizza la cache a livello di server web. Il caching di Nginx FastCGI memorizza l'HTML generato nella RAM o su disco e lo serve direttamente, bypassando completamente PHP e MySQL per i visitatori anonimi.
2. Indurimento e assottigliamento via wp-config.php
IL wp-config.php file è la tua sala di controllo. Per impostazione predefinita, WordPress consente determinati comportamenti che gonfiano il database nel tempo.
Aggiungi questi frammenti subito prima del file /* That's all, stop editing! Happy publishing. */ linea.
Limita le revisioni dei post
Per impostazione predefinita, WordPress memorizza infinite revisioni dei tuoi post. Un post aggiornato 50 volte avrà 50 copie nel tuo wp_posts tabella del database, rallentando notevolmente le query del database.
// Keep only the last 3 revisions
define( 'WP_POST_REVISIONS', 3 );
Ottimizza l'intervallo di salvataggio automatico
WordPress effettua il salvataggio automatico ogni 60 secondi. Se hai più editor che lavorano, questo martella il database. Rallentalo.
// Change autosave from 60 seconds to 5 minutes
define( 'AUTOSAVE_INTERVAL', 300 );
Svuota il cestino più velocemente
I post e i commenti eliminati rimangono nel database per 30 giorni. Riducilo per mantenere il database snello.
// Empty trash every 7 days
define( 'EMPTY_TRASH_DAYS', 7 );
3. L'“Anti-gonfiore” functions.php Frammento principale
Il core di WordPress inserisce un'enorme quantità di script di supporto legacy, collegamenti di scoperta e stili incorporati nel tuo E per impostazione predefinita.
Per ottenere il massimo guadagno di informazioni rispetto alla concorrenza, non ti diremo semplicemente di “usare un plugin di debloat”. Ecco il codice esatto per rimuovere chirurgicamente il gonfiore più comune di WordPress.
Nota: aggiungilo al tuo tema figlio functions.php o un plug-in mu drop-in.
/**
* 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;
});
Cosa abbiamo appena ottenuto?
Aggiungendo il codice sopra, hai eliminato immediatamente fino a 5-8 richieste HTTP non necessarie e rimosso dozzine di righe di CSS/JS in linea da ogni singola pagina caricata, il tutto senza installare un singolo plug-in.
4. Ottimizzazione dei media (nel modo più difficile)
Plugin come Smush o Imagify sono convenienti, ma eseguono l'elaborazione delle immagini sul tuo server PHP, consumando risorse della CPU.
Conversione WebP/AVIF manuale
Prima di caricare qualsiasi immagine su WordPress, eseguila tramite un compressore esterno senza perdite come Squoosh.app (da Google) o TinyPNG. Meglio ancora, convertili in .webp O .avif formati localmente prima del caricamento.
Sfrutta il caricamento lento nativo
A partire da WordPress 5.5, il caricamento lento nativo è integrato. WordPress aggiunge automaticamente loading="lazy" alle tue immagini Non è necessario un plug-in di caricamento lento basato su JavaScript. Tuttavia, assicurati che le tue immagini "above the fold" (come il tuo logo o l'immagine hero) NON abbiano questo attributo, poiché ritarderà il Largest Contentful Paint (LCP).
Puoi rimuovere il caricamento lento per la prima immagine su una pagina tramite 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. Deframmentazione del database tramite phpMyAdmin
I plugin di ottimizzazione di solito dispongono di un pulsante “Pulisci database”. Puoi farlo in modo nativo a livello di database.
- Accedi al tuo pannello di hosting e apri phpMyAdmin.
- Seleziona il tuo database WordPress.
- Scorri fino in fondo, controlla Controlla tutto.
- Nel menu a discesa "Con selezionato:", scegli Ottimizza la tabella.
MySQL ricostruirà gli indici delle tabelle e recupererà lo spazio inutilizzato. Fatelo manualmente una volta al mese.
Il verdetto
Ottimizzare WordPress senza plugin non significa solo risparmiare denaro sugli abbonamenti premium. È una filosofia di riduzione del debito tecnico. Ogni plugin che non installi rappresenta una vulnerabilità di sicurezza che non devi correggere, una tabella di database che non devi pulire e uno script PHP che il tuo server non deve eseguire.
Sposta il carico di lavoro sul server (PHP 8.1+, Nginx FastCGI), applica la disciplina nel tuo wp-config.phpe taglia via il gonfiore centrale usando il tuo functions.php. Il tuo Time to First Byte (TTFB) e Core Web Vitals rifletteranno la differenza.



