If you’re reading this, you’re likely tired of the consejo estándar de rendimiento de WordPress. The usual routine—installing WP Rocket, adding an image optimizer plugin, and throwing in an asset manager—often leads to a paradox: instalas plugins para acelerar tu sitio, pero los plugins mismos añaden hinchazón a la base de datos, trabajos cron en segundo plano y sus propias cargas de 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.
En esta guía, vamos a omitir por completo el ecosistema de plugins. Optimizaremos WordPress usando configuraciones del lado del servidor, wp-config.php ajustes, y quirúrgicos functions.php fragmentos.
1. La base del lado del servidor (Sin necesidad de PHP)
Antes de tocar una sola línea de código de WordPress, tu entorno de servidor debe estar fuertemente optimizado. Un servidor débil no puede arreglarse con caché del front-end.
Actualiza a PHP 8.1+
WordPress funciona con PHP. Pasar de PHP 7.4 a PHP 8.1 u 8.2 puede generar una reducción del 20-30% en el tiempo de ejecución y un consumo de memoria significativamente menor. Acción: Cambia esto en tu cPanel, Plesk, o mediante CLI si gestionas tu propio VPS.
Habilitar compresión a nivel de servidor (Brotli sobre Gzip)
Mientras que Gzip es estándar, Brotli (desarrollado por Google) proporciona aproximadamente un 15-20% mejores ratios de compresión para archivos de texto (HTML, CSS, JS) con el mismo costo de CPU. Acción (Nginx): Asegúrate de que tu nginx.conf tiene Brotli habilitado:
brotli on;
brotli_comp_level 6;
brotli_types text/plain text/css application/javascript application/json image/svg+xml;
Implementar Caché FastCGI (Nginx) o LiteSpeed Cache
En lugar de usar un plugin de caché basado en PHP (que aún requiere que WordPress se cargue parcialmente para servir la caché), almacena en caché a nivel del servidor web. La caché FastCGI de Nginx almacena el HTML generado en RAM o en disco y lo sirve directamente, evitando por completo PHP y MySQL para los visitantes anónimos.
2. Endurecimiento y adelgazamiento mediante wp-config.php
El wp-config.php archivo es tu sala de control. Por defecto, WordPress permite ciertos comportamientos que inflan tu base de datos con el tiempo.
Agrega estos fragmentos justo antes de la /* That's all, stop editing! Happy publishing. */ línea.
Limitar las revisiones de entradas
Por defecto, WordPress almacena infinitas revisiones de tus entradas. Una entrada actualizada 50 veces tendrá 50 copias en tu wp_posts tabla de base de datos, ralentizando drásticamente las consultas a la base de datos.
// Keep only the last 3 revisions
define( 'WP_POST_REVISIONS', 3 );
Optimizar el intervalo de autoguardado
WordPress autoguarda cada 60 segundos. Si tienes varios editores trabajando, esto golpea la base de datos. Redúcelo.
// Change autosave from 60 seconds to 5 minutes
define( 'AUTOSAVE_INTERVAL', 300 );
Vaciar la papelera más rápido
Las entradas y comentarios eliminados permanecen en la base de datos durante 30 días. Reduce esto para mantener la base de datos ágil.
// Empty trash every 7 days
define( 'EMPTY_TRASH_DAYS', 7 );
3. The “Anti-Bloat” functions.php Fragmento maestro
El núcleo de WordPress inyecta una gran cantidad de scripts de soporte heredados, enlaces de descubrimiento y estilos en línea en tu <head> y <footer> por defecto.
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 o un mu-plugin 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;
});
¿Qué acabamos de lograr?
Al agregar el código anterior, has eliminado instantáneamente hasta 5-8 solicitudes HTTP innecesarias and removed dozens of lines of inline CSS/JS from every single page load—all without installing a single plugin.
4. Optimización de medios (El camino difícil)
Plugins como Smush o Imagify son convenientes, pero ejecutan el procesamiento de imágenes en tu servidor PHP, consumiendo recursos de CPU.
Conversión manual a WebP/AVIF
Antes de subir cualquier imagen a WordPress, pásala por un compresor externo sin pérdida como Squoosh.app (de Google) o TinyPNG. Mejor aún, conviértelas a .webp o .avif formatos localmente antes de subirlas.
Aprovechar la carga diferida nativa
Desde WordPress 5.5, la carga diferida nativa está integrada. WordPress agrega automáticamente 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).
Puedes eliminar la carga diferida para la primera imagen de una página mediante 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. Desfragmentación de la base de datos mediante phpMyAdmin
Optimization plugins usually feature a “Clean Database” button. You can do this natively at the database level.
- Inicia sesión en tu panel de hosting y abre phpMyAdmin.
- Selecciona tu base de datos de WordPress.
- Desplázate hasta el final, marca Seleccionar todo.
- In the “With selected:” dropdown, choose Optimizar tabla.
MySQL reconstruirá los índices de la tabla y recuperará el espacio no utilizado. Haga esto manualmente una vez al mes.
El veredicto
Optimizing WordPress without plugins isn’t just about saving money on premium subscriptions. It is a philosophy of reducir la deuda técnica. 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.
Transfiere la carga de trabajo al servidor (PHP 8.1+, Nginx FastCGI), impón disciplina en tu wp-config.php, y elimina la hinchazón del núcleo usando tu functions.php. Tu Time to First Byte (TTFB) y Core Web Vitals reflejarán la diferencia.



