Logo
WP Fix by Blimx

La Trampa Autoload — Detectar y Limpiar Opciones Infladas de WordPress

Actualizado:
PerformanceDatabase

El costo oculto de las opciones WordPress

Cada petición de WordPress empieza con una sola query:

SELECT option_name, option_value FROM wp_options WHERE autoload = 'yes';

Esto carga todas las opciones marcadas autoload='yes' a memoria. La intención: guardar configuración necesaria frecuentemente una vez por petición en lugar de consultar por opción.

El problema: los plugins escriben datos a opciones descuidadamente. Sobre años, el payload autoload crece de un saludable 200KB a un catastrófico 20MB. Cada petición ahora carga 20MB de datos mayoritariamente inútiles de MySQL a PHP, soplando memoria y ralentizando cada página.

Este artículo es el playbook diagnóstico y de limpieza para autoload bloat.

Cómo medir tu tamaño autoload

La query individual más importante para rendimiento WordPress:

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

Saludable: bajo 1MB, menos de 200 opciones. Preocupante: 1-5MB, 200-500 opciones. Catastrófico: 5MB+, 500+ opciones.

Los mayores ofensores

SELECT 
  option_name, 
  ROUND(LENGTH(option_value)/1024, 2) AS size_kb
FROM wp_options 
WHERE autoload = 'yes'
ORDER BY LENGTH(option_value) DESC
LIMIT 30;

El output muestra tus top 30 opciones autoload por tamaño. Patrones que hemos visto:

Patrón 1 — Transients huérfanos de plugins

_transient_timeout_X     350 KB
_transient_X             280 KB

Si removiste un plugin pero sus transients no se limpiaron, persisten por siempre.

Patrón 2 — Cachés de plugins obsoletos

wpforms_cached_forms      4500 KB
elementor_template_data   3200 KB

Los desarrolladores de plugins no deberían guardar este tipo de datos autoloaded. Pero muchos lo hacen. Años de acumulación crean entradas autoload masivas.

Patrón 3 — Plugins deshabilitados dejados atrás

some_old_plugin_settings  1200 KB
some_old_plugin_data      900 KB

Cuando desactivas (no borras) un plugin, sus opciones permanecen. Siguen cargando en cada petición, desperdiciando tiempo.

Patrón 4 — Datos de plugin de backup

backwpup_jobs             8000 KB
ai1wm_export_status       5000 KB

Plugins de backup a veces guardan metadata de backup en autoload. Masivo.

Por qué autoload bloat ralentiza todo

Cargar 20MB de MySQL toma 200-500ms incluso en hardware rápido. Multiplica por 1000 visitas por hora y tienes:

  • 200,000-500,000ms de tiempo innecesario gastado por hora
  • CPU MySQL alto solo sirviendo las mismas opciones repetidamente
  • Presión de memoria PHP (los datos quedan en memoria por la petición completa)
  • Cache misses (el object cache se puebla con datos inútiles)

En agregado, autoload bloat es a menudo la causa individual más grande de sitios WordPress lentos. Hemos visto TTFB caer de 2.5s a 400ms tras una limpieza autoload de 10 minutos.

El procedimiento de limpieza

Paso 1 — Backup la base de datos

wp db export pre-autoload-cleanup.sql

No negociable. Algunas opciones "inútiles" pueden ser necesarias por código que no te das cuenta corre.

Paso 2 — Identifica candidatos de limpieza

-- Top 50 entradas autoload por tamaño
SELECT option_name, ROUND(LENGTH(option_value)/1024, 2) AS size_kb
FROM wp_options 
WHERE autoload = 'yes'
ORDER BY LENGTH(option_value) DESC
LIMIT 50;

Para cada entrada grande, responde: 1. ¿El plugin sigue activo? Si no → la opción probablemente puede borrarse 2. ¿Es un transient? Si sí → puede borrarse (se regenerará si es necesario) 3. ¿Está documentado en algún lugar? Busca en Google wp_options "<option_name>"

Paso 3 — Borra transients expirados

-- Borra transients expirados
DELETE FROM wp_options WHERE option_name LIKE '\_transient\_timeout\_%' AND option_value < UNIX_TIMESTAMP();

DELETE FROM wp_options WHERE option_name LIKE '\_transient\_%' 
  AND option_name NOT IN (SELECT * FROM (SELECT REPLACE(option_name, '_transient_timeout_', '_transient_') FROM wp_options WHERE option_name LIKE '\_transient\_timeout\_%') a);

O con WP-CLI:

wp transient delete --expired

Paso 4 — Remueve opciones de plugins desactivados/desinstalados

Obtén una lista de todos los plugins alguna vez instalados:

ls wp-content/plugins/

Para cada plugin, identifica sus opciones:

SELECT option_name FROM wp_options WHERE option_name LIKE '<plugin_prefix>%';

Si el plugin fue desinstalado pero las opciones permanecen, bórralas:

DELETE FROM wp_options WHERE option_name LIKE 'oldplugin_%';

Paso 5 — Cambia entradas autoload grandes a autoload=no

Para opciones que necesitas mantener pero no cargar en cada petición:

UPDATE wp_options SET autoload = 'no' WHERE option_name = 'huge_option_name';

Los datos se preservan; solo no cargarán en cada petición. El plugin que los necesite los buscará explícitamente cuando sea necesario.

Candidatos para autoload=no: - Metadata de plugins de backup - Cachés de plugins viejos - Datos de export/import de plugins - Agregados estilo analytics

Paso 6 — Re-mide

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

Meta: bajo 1MB total, bajo 300 opciones.

El object cache persistente cambia la ecuación

Si tienes Redis o Memcached configurado como object cache persistente, autoload bloat duele menos — las opciones se cachean tras la primera carga.

Pero: el object cache persistente no ayuda en la primera petición tras cache clear, y no ayuda cuando el cache es desalojado bajo presión de memoria. Así que autoload bloat aún duele durante picos de tráfico y cache clears.

Setup recomendado:

// wp-config.php
define('WP_CACHE', true);
define('WP_CACHE_KEY_SALT', 'yoursite-prefix');

Instala plugin Redis Object Cache. Configura Redis con 256MB+ memoria.

Errores comunes durante limpieza autoload

  • Borrar opciones sin backup — algunos plugins corrompen sin su config; backup primero
  • Configurar autoload=no en opciones críticas — como siteurl, home, wp_user_roles; estas DEBEN quedar autoloaded
  • Confiar en plugins "Optimize Database" a ciegas — a menudo borran demasiado agresivamente
  • No medir antes/después — no puedes saber si la limpieza ayudó sin números

Monitoreando crecimiento autoload

Configura un check semanal:

# crontab
0 9 * * 1 wp option list --autoload=on --format=count >> /var/log/autoload-count.log
0 9 * * 1 wp db query "SELECT ROUND(SUM(LENGTH(option_value))/1024/1024, 2) FROM wp_options WHERE autoload = 'yes'" >> /var/log/autoload-size.log

Si el tamaño crece 500KB+ en una semana, investiga qué plugin añadió tanto.

Plugins ofensores comunes (2026)

Plugins que rutinariamente vemos causando autoload bloat:

  • WPForms — cachea datos de formulario autoloaded
  • BackWPup — metadata de jobs de backup
  • Yoast Premium — cachés internos
  • Extensiones WooCommerce — algunas guardan datos tipo transient autoloaded
  • Visual Composer / WPBakery viejos — settings de tema grandes

Audita opciones de estos plugins trimestralmente.

Cuándo llamar a un especialista

Si tu autoload es 10MB+ o ves TTFB consistentemente arriba de 1500ms a pesar de caching, la trampa autoload casi seguro está involucrada. Una auditoría completa de rendimiento de base de datos usualmente encuentra 2-5 problemas separados; la limpieza total toma 1-3 horas.

Diagnóstico de recuperación de velocidad para rendimiento del sitio completo. Para trabajo específico de base de datos ve optimización de base de datos.