Cómo optimizar WordPress para la velocidad sin complementos (la guía de solo código)

Publicado el | Por
6 minutos de lectura

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: instala complementos para acelerar su sitio, pero los complementos en sí agregan sobrecarga de base de datos, trabajos cron en segundo plano y sus propias cargas útiles CSS/JS.

La verdad es que WordPress no necesita 15 complementos de rendimiento para cargarse en menos de un segundo. La verdadera optimización de la velocidad ocurre en la capa metálica: el servidor, la base de datos y el código central.

En esta guía, vamos a omitir por completo el ecosistema de complementos. Optimizaremos WordPress usando configuraciones del lado del servidor, wp-config.php ajustes y cirugía functions.php fragmentos.


1. La base del lado del servidor (no se requiere PHP)

Antes de tocar una sola línea de código de WordPress, el entorno de su servidor debe estar muy optimizado. Un servidor débil no se puede reparar mediante el almacenamiento en caché de front-end.

Actualice a PHP 8.1+

WordPress se ejecuta en PHP. Pasar de PHP 7.4 a PHP 8.1 u 8.2 puede producir una reducción del 20 al 30 % en el tiempo de ejecución y un consumo de memoria significativamente menor. Acción: Cambie esto en su cPanel, Plesk o mediante CLI si administra su propio VPS.

Habilitar la compresión a nivel de servidor (Brotli sobre Gzip)

Si bien Gzip es estándar, brotli (desarrollado por Google) proporciona aproximadamente entre un 15% y un 20% mejores relaciones de compresión para archivos de texto (HTML, CSS, JS) con el mismo coste de CPU. Acción (Nginx): Asegure su 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 FastCGI Caching (Nginx) o LiteSpeed ​​Cache

En lugar de utilizar un complemento de almacenamiento en caché basado en PHP (que aún requiere que WordPress se cargue parcialmente para servir el caché), almacene el caché a nivel del servidor web. El almacenamiento en caché Nginx FastCGI almacena el HTML generado en la RAM o en el disco y lo sirve directamente, evitando por completo PHP y MySQL para visitantes anónimos.


2. Endurecimiento y adelgazamiento mediante wp-config.php

El wp-config.php El archivo es su sala de control. De forma predeterminada, WordPress permite ciertos comportamientos que inflan su base de datos con el tiempo.

Agregue estos fragmentos justo antes del /* That's all, stop editing! Happy publishing. */ línea.

Limitar revisiones de publicaciones

De forma predeterminada, WordPress almacena infinitas revisiones de tus publicaciones. Una publicación actualizada 50 veces tendrá 50 copias en tu wp_posts tabla de la base de datos, lo que ralentiza drásticamente las consultas a la base de datos.

// Keep only the last 3 revisions
define( 'WP_POST_REVISIONS', 3 );

Optimice el intervalo de guardado automático

WordPress se guarda automáticamente cada 60 segundos. Si tiene varios editores trabajando, esto perjudica la base de datos. Más despacio.

// Change autosave from 60 seconds to 5 minutes
define( 'AUTOSAVE_INTERVAL', 300 );

Vacíe la basura más rápido

Las publicaciones y comentarios eliminados permanecen en la base de datos durante 30 días. Reduzca esto para mantener la base de datos optimizada.

// Empty trash every 7 days
define( 'EMPTY_TRASH_DAYS', 7 );

3. El “anti-inflación” 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 su  y 

 por defecto.

Para lograr la máxima ganancia de información sobre la competencia, no le diremos simplemente que "use un complemento de eliminación". Aquí está el código exacto para eliminar quirúrgicamente la hinchazón más común de WordPress.

Nota: agregue esto al tema de su hijo functions.php o un complemento mu directo.

/**
 * 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, elimina instantáneamente hasta 5-8 solicitudes HTTP innecesarias y eliminó docenas de líneas de CSS/JS en línea de cada carga de página, todo sin instalar un solo complemento.


4. Optimización de medios (por las malas)

Los complementos como Smush o Imagify son convenientes, pero ejecutan el procesamiento de imágenes en su servidor PHP, consumiendo recursos de la CPU.

Conversión manual de WebP/AVIF

Antes de cargar cualquier imagen en WordPress, ejecútela a través de un compresor externo sin pérdidas como Squoosh.aplicación (por Google) o PequeñoPNG. Mejor aún, conviértalos a .webp o .avif formatos localmente antes de cargar.

Aproveche la carga diferida nativa

Desde WordPress 5.5, la carga diferida nativa está incorporada. WordPress agrega automáticamente loading="lazy" a tus imágenes. No necesita un complemento de carga diferida basado en JavaScript. Sin embargo, asegúrese de que sus imágenes "en la mitad superior de la página" (como su logotipo o imagen principal) NO tengan este atributo, ya que retrasará la pintura con contenido más grande (LCP).

Puede eliminar la carga diferida de la primera imagen de una página a través de 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

Los complementos de optimización suelen incluir un botón "Limpiar base de datos". Puede hacer esto de forma nativa en el nivel de la base de datos.

  1. Inicie sesión en su panel de hosting y abra phpMyAdmin.
  2. Seleccione su base de datos de WordPress.
  3. Desplácese hasta el final, verifique comprobar todo.
  4. En el menú desplegable "Con seleccionado:", elija Optimizar tabla.

MySQL reconstruirá los índices de la tabla y recuperará el espacio no utilizado. Haga esto manualmente una vez al mes.


El veredicto

Optimizar WordPress sin complementos no se trata solo de ahorrar dinero en suscripciones premium. Es una filosofía de reducir la deuda técnica. Cada complemento que no instala es una vulnerabilidad de seguridad que no tiene que parchear, una tabla de base de datos que no tiene que limpiar y un script PHP que su servidor no tiene que ejecutar.

Cambie la carga de trabajo al servidor (PHP 8.1+, Nginx FastCGI), imponga disciplina en su wp-config.phpy corte la hinchazón central usando su functions.php. Su tiempo hasta el primer byte (TTFB) y Core Web Vitals reflejarán la diferencia.

Ajay Malik

Ajay Malik es un desarrollador de WordPress y Elite Freelancer con más de 8 años de experiencia.