Escribe para buscar notas, herramientas y páginas...

Checklist de auditoría de rendimiento y admin de WordPress

Recorre estas 12 comprobaciones basadas en evidencia para aislar latencia de admin, cuellos de botella de base de datos y errores de configuración del servidor. El estado se guarda automáticamente en el navegador.

Progreso de la auditoría

Abre DevTools > pestaña Network. Recarga la página de admin. Comprueba el Time to First Byte (TTFB) de la petición del documento HTML principal.

  • TTFB > 1.0s: Cuello de botella en el servidor (PHP, BD, HTTP de salida, fallos de caché).
  • TTFB rápido, página lenta: Problema en el cliente (polling AJAX, ejecución de JS, assets que bloquean).

Instala Query Monitor de forma temporal y revisa el panel HTTP API Calls. Busca comprobaciones de licencia o llamadas de analítica que bloqueen el renderizado del admin.

// In wp-config.php to block outbound HTTP natively:
define( 'WP_HTTP_BLOCK_EXTERNAL', true );
define( 'WP_ACCESSIBLE_HOSTS', 'api.wordpress.org' );

Asegúrate de que los datos con autoload no superen 1MB. Ejecuta una consulta SQL para medir la huella total de memoria.

SELECT ROUND(SUM(LENGTH(option_value)) / 1024 / 1024, 2) AS total_mb
FROM wp_options WHERE autoload = 'yes';

Nunca uses DELETE FROM wp_options en crudo para transients (deja timeouts huérfanos). Usa WP-CLI.

wp transient delete --all

Evita que trabajos pesados en segundo plano se ejecuten durante peticiones de usuario. Añade DISABLE_WP_CRON a wp-config.php y luego programa crontab.

define( 'DISABLE_WP_CRON', true );

Verifica que OPcache está activo y configura opcache.revalidate_freq = 60 o superior en producción.

opcache.enable = 1
opcache.memory_consumption = 128
opcache.revalidate_freq = 60

Reduce consultas redundantes a la base de datos en las vistas de admin. Confirma el estado activo con WP-CLI.

wp redis status

No desactives plugins de forma global en un sitio en vivo. Instala Health Check & Troubleshooting para aislar problemas de plugins solo en tu sesión de admin.

Heartbeat consulta admin-ajax.php cada 15s en el editor y cada 60s en otras pantallas. Limita la frecuencia con un filter.

add_filter( 'heartbeat_settings', function( $s ) { $s['interval'] = 60; return $s; } );

MySQL solo indexa los primeros 20 caracteres de wp_postmeta.meta_value. Las consultas que filtran por meta values más largos provocan full table scans.

Los widgets del dashboard obtienen feeds RSS remotos de forma síncrona durante el renderizado inicial. Oculta o desengancha los widgets de dashboard no usados.

Asegúrate de que las llamadas síncronas a wp_mail() durante acciones de admin usen un relay SMTP local o una cola en segundo plano para evitar bloqueos por timeout de conexión.

El diagnóstico está en las notas

El checklist es un punto de partida. El diagnóstico está en las notas.