...

WordPress sin plugins: hasta dónde se puede llegar realmente con una configuración mínima

WordPress sin plugins ofrece un rendimiento sorprendentemente alto cuando configuro la caché, las imágenes, el código, la configuración del servidor y el tema en concreto. Con un wp configuración mínima He conseguido tiempos de carga entre un 30 y un 60 por ciento más rápidos en los proyectos, sin ninguna extensión adicional.

Puntos centrales

  • Almacenamiento en caché a través de .htaccess acelera significativamente las llamadas repetidas.
  • fotos comprimir antes de subir y utilizar WebP.
  • Código Manténgalo delgado, elimine CSS/JS innecesarios.
  • Fuentes fuentes locales o del sistema.
  • Servidor-y configure PHP de forma sensata.

Activar la caché del navegador: carga más rápida sin herramientas adicionales

Mi primera apuesta es por Caché del navegador, porque las visitas recurrentes se benefician masivamente. Almaceno las cabeceras Cache-Control y Expires en el .htaccess para que el navegador almacene los archivos estáticos durante más tiempo y Consultas se reduce. Para ello bastan unas pocas líneas como ExpiresActive On y unos valores max-age adecuados, lo que lleva menos de un minuto. En las pruebas, el tiempo de carga se reduce notablemente, a menudo entre un 30 y un 40 por ciento en las llamadas posteriores. Si quieres profundizar, lee mi planteamiento en Pagespeed sin plugins y ajusta los tiempos para cada tipo de archivo.

Ejemplo de cabecera en el .htaccess

Establezco tiempos de caducidad largos para los activos estáticos y marco los archivos no modificados como inmutable, para que el navegador no valide innecesariamente:

# Activar caché
ExpiresActive On
ExpiresDefault "acceso más 1 mes"
ExpiresByType image/webp "acceso más 1 año"
ExpiresByType image/avif "acceso más 1 año"
ExpiresByType image/jpeg "acceso más 1 año"
ExpiresByType image/png "acceso más 1 año"
ExpiresByType image/svg+xml "acceso más 1 año"
ExpiresByType text/css "acceso más 1 año"
ExpiresByType application/javascript "acceso más 1 año"
ExpiresByType font/woff2 "acceso más 1 año"

# Control de caché con inmutable para archivos versionados

  Conjunto de encabezados Cache-Control "public, max-age=31536000, immutable"


# Mantenga el HTML deliberadamente corto (sin cachés a largo plazo)

  Conjunto de encabezados Cache-Control "no-cache, no-store, must-revalidate"

WordPress suele proporcionar activos con parámetros de versión (por ejemplo, ?ver=1.2.3). Esta forma de versionado armoniza con tiempos de caché largos y inmutable, porque se crea automáticamente una nueva URL cuando se realizan cambios.

Validación y coherencia

Suelo dejar Última modificación activo y no utilice ETags cuando trabaje detrás de balanceadores de carga para evitar revalidaciones innecesarias. Sigue siendo importante: No almacenar en caché HTML de forma agresiva para mantener el contenido y los estados de sesión actualizados.

Optimizar imágenes: WebP, tamaño y lazy loading

Las imágenes suelen determinar el volumen de datos de una página, por lo que siempre los comprimo antes de subirlos. Para las fotos elijo JPG o WebP, para los gráficos WebP o PNG, según el motivo y el tamaño. calidad. Los gráficos héroe se mantienen por debajo de 200 KB y preparo varios tamaños para diferentes anchos. De este modo, WordPress ofrece la variante adecuada en función de la ventana gráfica y ahorra en la transferencia. También utilizo la carga lenta mediante el atributo loading=“lazy“ o la función estándar de WordPress.

Imágenes y tamaños adaptables

Presto atención a corregir anchura- y altura-atributos para evitar los saltos de diseño (CLS). Con srcset Defino adecuado tallas, para que el navegador no cargue variantes demasiado grandes. Para la imagen del héroe, establezco el atributo fetchpriority="alta", para que el elemento LCP tenga prioridad desde el principio. Cuando tiene sentido, utilizo AVIF como alternativa a WebP, pero no pierdas de vista las fallbacks.

Marcadores de posición limpios en lugar de FOUC

Trabajo con CSS-relación de aspecto o marcadores de posición conservadores para que el espacio se reserve a las imágenes. Esto mantiene la interacción tranquila y la Core Web Vitals estable.

Optimización del código sin herramientas adicionales

Despejo primero CSS y elimino las reglas que no se aplican en ninguna parte. Luego resumo JavaScript, prescindo de jQuery para las cosas pequeñas y cargo los scripts con aplazar. Cuando procede, minimizo HTML, CSS y JS con sencillas herramientas en línea para que desaparezcan los espacios y los comentarios. Esto suele reducir considerablemente el tamaño de los archivos y acelera la transmisión. También compruebo si incluyo el CSS crítico directamente en la cabecera y cargo el resto de estilos con retraso.

Prioridades críticas de CSS y renderizado

El Por encima del pliegue-con un pequeño CSS en línea, mientras que el resto se hace a través de media=“imprimir“-hack o rel=“preload“ y onload-se carga más tarde. La moderación es importante: Un bloque en línea demasiado grande ralentiza la transferencia de HTML y TTFB.

JavaScript: Aplazamiento, Async y Módulos

Configuro los guiones en aplazar, si dependen del DOM, y en async con rastreadores independientes. Los paquetes modernos pueden utilizarse como type=“módulo“ que tiene una semántica de aplazamiento automática. Evito sistemáticamente bloquear JS en línea en la cabeza.

Reducir los recursos externos: menos peticiones, más control

Cada consulta externa cuesta tiempo y control, por eso confío en Fuentes del sistema o fuentes alojadas localmente. En lugar de obtener las fuentes de Google a través de una CDN, cargo los archivos en mi propia instalación y desactivo los estilos de fuente innecesarios. En el caso de los análisis y las incrustaciones, también decido conscientemente si necesito secuencias de comandos o si prefiero una solución más sencilla. Solución es suficiente. Para evaluar el efecto sin caché de página, utilizo un Comprobación en directo sin caché de página y mido el rendimiento puro del servidor y del frontend. De este modo, minimizo las dependencias externas y acelero el tiempo hasta el primer byte.

Utilizar las sugerencias de recursos de forma selectiva

Si necesito dominios externos, configuro preconectar/dns-prefetch con moderación y sólo para hosts realmente críticos. Para fuentes alojadas localmente precarga al archivo WOFF2 de la fuente principal incluyendo font-display: swap, para que el texto sea inmediatamente visible.

Establezca la configuración de PHP y del servidor de forma sensata

Establezco una corriente PHP-versión y activar OPcache, porque las respuestas dinámicas se benefician mucho de ello. Para sitios web sencillos, un límite de memoria de 128 MB suele ser suficiente, mientras que las instalaciones muy ampliadas requieren más; un límite demasiado alto malgasta recursos, un límite demasiado bajo produce demasiada memoria. Error. También optimizo max_execution_time y max_input_vars a los requisitos reales. En el lado del servidor, activo GZIP o Brotli, mantengo activo Keep-Alive y utilizo HTTP/2 o HTTP/3, si están disponibles. Estas medidas acortan el tiempo de servidor y aceleran la estructura de la página incluso antes de la renderización.

Aliviar WP-Cron

Muchas instalaciones llaman a tareas con demasiada frecuencia, lo que Tiempo de respuesta notablemente influenciado. Por lo tanto, compruebo con qué frecuencia se ejecutan las tareas cron y muevo las tareas poco frecuentes a entradas cron reales del sistema. Si tienes dudas al respecto, puedes encontrar una explicación compacta en Optimizar WP-Cron y luego establece intervalos más sensatos. De este modo, reduzco las llamadas innecesarias a PHP y estabilizo el Actuación en los picos de carga. El resultado son tiempos de respuesta más constantes y menos carga en reposo.

OPcache con sentido de la proporción

Doy a OPcache suficiente memoria y desactivo las comprobaciones caras en producción. Valores de ejemplo que han demostrado su eficacia:

; php.ini / opcache.ini
opcache.enable=1
opcache.enable_cli=0
opcache.memory_consumption=192
opcache.interned_strings_buffer=16
opcache.max_accelerated_files=20000
opcache.validate_timestamps=0 ; en producción mediante deploy clear
opcache.revalidate_freq=0

En entornos de desarrollo activo validar_marcas_de_tiempo de nuevo para que los cambios sean visibles inmediatamente.

PHP-FPM y frenos de módulos

Adapto el gestor de procesos PHP-FPM al perfil de tráfico (por ejemplo. pm = dinámico, sensato pm.max_hijos) y eliminar módulos para desarrolladores como Xdebug en producción. Registro los mensajes de error, pero no los imprimo (display_errors=0) para reducir el tamaño de la respuesta y el riesgo.

Tema ligero en lugar de lastre característico

Un tema delgado marca la Base para páginas rápidas, por lo que evito los gigantes de características con gruesos sliders e incontables shortcodes. Los temas modernos de bloques o los clásicos minimalistas como GeneratePress o Blocksy aportan poca sobrecarga y se centran en un diseño limpio. Código. Construyo pequeñas interacciones con vanilla JS, estilos en archivos CSS modulares. Desactivo funciones que no uso y elimino plantillas superfluas. Esto mantiene la cadena de renderizado corta y evita peticiones innecesarias.

Desactivar el lastre de WordPress en el tema

Unas líneas en el funciones.php eliminar la sobrecarga sin utilizar plugins:

// Desactivar emojis
remove_action('wp_head', 'print_emoji_detection_script', 7);
remove_action('wp_print_styles', 'print_emoji_styles');

// desactivar el servicio oEmbed y los scripts si no se necesitan
remove_action('wp_head', 'wp_oembed_add_discovery_links');
remove_action('wp_head', 'rest_output_link_wp_head');
add_action('wp_footer', function(){ wp_dequeue_script('wp-embed'); });

// Cargar dashicons sólo en el backend
add_action('wp_enqueue_scripts', function(){
  if (!is_user_logged_in()) { wp_deregister_style('dashicons'); }
});

// quitar jQuery Migrate en el frontend (sólo si es compatible)
add_action('wp_default_scripts', function($scripts){
  if (!is_admin() && !empty($scripts->registered['jquery'])) {
    $scripts->registered['jquery']->deps =
      array_diff($scripts->registered['jquery']->deps, ['jquery-migrate']);
  }
});

Hago pruebas exhaustivas después de cada cambio para evitar incompatibilidades. Especialmente al eliminar jQuery Migrate, es obligatorio realizar una prueba funcional.

Ordenar la base de datos: menos desorden, consultas más rápidas

Borro viejos Revisiones, borradores y contenido de la papelera de reciclaje y limito las nuevas versiones en wp-config.php. También acorto los transitorios vencidos y compruebo las opciones de carga automática que, de otro modo, se almacenarían innecesariamente al iniciar la página. Mantengo limpia la moderación de comentarios y la eliminación de spam para que las tablas sigan siendo compactas y Índices trabajar eficazmente. Si te manejas bien, optimiza las tablas una vez al mes. Cada reducción de la cantidad de datos acelera notablemente las consultas y las llamadas al backend.

No pierdas de vista las opciones de carga automática

Demasiado grande carga automática-Las entradas ralentizan todas las peticiones. Lo ideal es mantener el total por debajo de unos pocos MB. Ejemplo de comprobación (ajuste el prefijo de la tabla):

SELECT SUM(LENGTH(option_value)) AS autoload_bytes, COUNT(*) AS rows
FROM wp_options WHERE autoload='yes';

En concreto, reduzco los valores que se salen de lo normal y establezco opciones poco utilizadas en autoload = no.

Limitar los transitorios y las revisiones

Limpio los transitorios caducados cíclicamente, por ejemplo con un simple borrado SQL a tiempo de espera transitorio %-entradas. En el wp-config.php Pongo límites razonables:

define('WP_POST_REVISIONS', 5);
define('EMPTY_TRASH_DAYS', 7);

Esto mantiene la base de datos manejable sin tener que prescindir por completo del historial.

Expectativas y límites realistas

Un enfoque minimalista es ideal para blogs, sitios web de empresas y proyectos con manejable Contenido. En cuanto entran en juego muchos usuarios simultáneos, funciones de tienda o personalizaciones complejas, alcanzo mis límites sin una caché de página completa. Límites. Para WooCommerce y los portales de noticias, consideraré soluciones de almacenamiento en caché específicas más adelante. El factor decisivo sigue siendo: Primero establecer una base limpia, luego ampliar si es necesario. De este modo, evito la proliferación de plugins y mantengo un control total sobre los tiempos de carga.

Características especiales de WooCommerce

En las páginas de las tiendas, evito las secuencias de comandos que consumen muchos recursos fuera del contexto de la cesta de la compra o la caja. wc-cart-fragments Lo desactivo en las páginas que no requieren una visualización dinámica de la cesta de la compra y lo cargo específicamente donde es necesario. Esto reduce notablemente la carga de JS.

Aplicación práctica y resultados satisfactorios

Trabajo paso a paso, midiendo después de cada Enmienda y documentar tiempos y efectos. Proceso típico: almacenamiento en caché de cabeceras, compresión de imágenes con WebP, acortamiento de código, reducción de recursos externos, decisión temática, ajuste del servidor y mantenimiento de la base de datos. En un ejemplo, los tiempos de carga bajaron de 1,3 segundos a 0,78 segundos, lo que corresponde a un buen 40%. El aumento se refleja en un mejor funcionamiento de la web y una experiencia notablemente más fluida. Interacción. El siguiente cuadro clasifica los costes y beneficios.

Medida Tiempo necesario Ganancia típica
.Cabecera de caché .htaccess 10-15 minutos grande para llamadas repetidas
Imágenes en WebP + tamaños 30-60 minutos Muy grande con carga de imágenes
Limpiar CSS/JS + minificar 60-120 minutos Mediana a grande
Reducir los recursos externos 30-60 minutos medio
Tema sencillo 30-90 minutos medio
Ajuste de PHP/Servidor 30-60 minutos medio
Mantenimiento de bases de datos 20-40 minutos medio

Pruebo cada nivel por separado y compruebo TTFB, Largest Contentful Paint y Interactividad. Esto me permite reconocer de forma fiable qué medidas funcionan realmente. Sólo añado tecnología especializada, como la caché de borde o las CDN de imágenes, una vez que la base está asentada. Esto evita malas inversiones y mantiene el Complejidad pequeño. El resultado sigue siendo mensurable y coherente.

Frenos frecuentes y soluciones rápidas

  • Anchuras/alturas que faltan para imágenes: lleva a CLS - especifica siempre o trabaja con aspect-ratio.
  • Demasiados estilos de letraRegular/Bold/Italic suelen ser suficientes; dar prioridad a WOFF2, precargar fuentes locales.
  • Dependencias innecesarias de jQueryEscribir pequeñas interacciones en Vanilla JS, reemplazar plugins.
  • Scripts síncronos de tercerosEstablecer async/deferir o eliminar completamente si no es crítico para el negocio.
  • Grandes guiones en línea en la cabeza: almacenar en archivos, priorizar correctamente.
  • Imágenes de gran tamañopuntos de interrupción correctos y tallas, en el servidor.
  • Opciones de carga automática con blobs grandes: ordenar, cambiar a bajo demanda.

Disciplina de medición y observabilidad sin plugins

Realizo mediciones reproducibles: mismas condiciones de red, misma ruta de prueba, caché caliente y fría. Utilizo DevTools localmente, establezco perfiles de estrangulamiento realistas y controlo Waterfall, TTFB, LCP, CLS y INP. En el servidor, miro los registros de accesos y errores, comparo los tiempos de respuesta por punto final y compruebo si los picos se corresponden con las ejecuciones de cron. Esto me permite reconocer los cuellos de botella sin módulos adicionales.

Presupuestos por resultados

Defino límites superiores, por ejemplo, LCP < 1,8 s, HTML < 50 KB, CSS total < 100 KB, JS total < 150 KB, imágenes totales en la página de inicio < 600 KB. Estos presupuestos evitan que se cuele peso.

Resumen y perspectivas

Con un wp configuración mínima Obtengo un rendimiento asombroso: caché de cabeceras, disciplina de imágenes, código reducido, recursos locales, ajuste inteligente del servidor y una base de datos bien mantenida. Para muchos proyectos, esto es suficiente para reducir significativamente los tiempos de carga y mejorar la clasificación. En el caso de las tiendas y los sitios con mucho tráfico, se puede utilizar una caché específica, pero sólo después de una limpieza a fondo. Trabajo básico. Si mides con coherencia y procedes paso a paso, puedes mantener tu sitio rápido y con poco mantenimiento. De este modo, WordPress responde, es seguro y fácil de mantener, sin lastres de plugins.

Artículos de actualidad