Muchos problemas de tiempo de carga se deben a WordPress Autoload en la tabla wp_options: Demasiadas o demasiado grandes opciones autocargadas hinchan cada petición y aumentan el TTFB, el tiempo de CPU y los requisitos de RAM. En este artículo, te mostraré cómo entender wp_options, medir el tamaño de autoload, reducirlo de manera específica y así aumentar notablemente el rendimiento real.
Puntos centrales
- Carga automática Explicación: Las opciones con autoload=“yes“ se cargan cada vez que se llama a la página.
- Valores límite Nota: Las pérdidas medibles se acumulan a partir de ~1 MB.
- Causas encontrar: Matrices grandes, transitorios, registros, datos de caché de plugins.
- Optimice en lugar de borrar: Establecer la bandera en „no“, eliminar las entradas obsoletas.
- PrevenciónEl mantenimiento, la supervisión y la selección sensata de plugins garantizan la velocidad.
¿Qué es autoload en wp_options?
WordPress guarda muchos ajustes en wp_options, cada objeto tiene un nombre, un valor y la bandera carga automática. Si esta bandera está en „yes“, WordPress carga el valor en memoria con cada petición, independientemente de si el contenido es necesario en ese momento. Esto es útil mientras la cantidad siga siendo pequeña y sólo entren datos verdaderamente globales. Si la cantidad y el tamaño total aumentan, el cómodo acceso rápido se convierte en una colección de bloques de freno. Las grandes matrices serializadas que WordPress tiene que deserializar cada vez que se llama a una página son particularmente problemáticas. Observo con regularidad que algunos plugins guardan involuntariamente configuraciones, registros o cachés de forma global, aunque sólo sean necesarios en unas pocas páginas.
Por qué demasiados datos de carga automática te ralentizan
Cada petición de página carga los bloques autoload de wp_options, lo que tiene un impacto directo en TTFB, Tiempo de CPU y E/S. Al aumentar el tamaño, aumentan los costes de deserialización y los requisitos de memoria, lo que puede provocar tiempos de espera en las tarifas de alojamiento más pequeñas. Incluso el almacenamiento en caché sólo ayuda de forma limitada en este caso, ya que la consulta inicial a la base de datos y el procesamiento siguen teniendo lugar. En cuanto hay mucho tráfico, los efectos se agravan, ya que muchos procesos procesan en paralelo los mismos registros de datos de gran tamaño. El resultado son acciones de backend lentas, cron jobs lentos y errores 500 esporádicos. Por lo tanto, confío en un vaciado coherente y una separación clara de los datos requeridos globalmente y las opciones poco utilizadas.
¿Cuándo se convierte en crítica la carga automática? Los umbrales de un vistazo
Como regla general, compruebo el Tamaño total de todos los valores de autoload=“yes“ primero, no sólo el número. Hasta unos 500 KB, las configuraciones limpias suelen funcionar aceptablemente, más allá de ~1 MB veo regularmente desventajas. Si el total es de varios megabytes, casi siempre hay algunos valores atípicos, que mitigo específicamente. No es raro que un solo plugin cause grandes matrices, cachés CSS o datos estadísticos. La siguiente tabla ayuda con la categorización y proporciona pasos específicos:
| Tamaño total de la carga automática | Riesgo | Medida recomendada |
|---|---|---|
| 0-500 KB | bajo | Documentar el estado, comprobar de vez en cuando |
| ~500 KB-1 MB | medio | Comprobar las entradas más grandes, purgar los datos innecesarios |
| > 1 MB | alta | Identificar al remitente principal, marcar „no“ o eliminar |
| > 2-3 MB | Crítica | Limpia y ordena sistemáticamente los datos del plug-in y los transitorios |
Reconocimiento de datos de carga automática: Análisis con SQL y herramientas
Antes de borrar los datos, determino el Pesos pesadosPrimero muestro la suma de LENGTH(option_value) de todas las entradas autoload=“yes“. A continuación, ordeno por tamaño para ver los valores de option_name más grandes, que casi siempre son los que proporcionan un mayor aprovechamiento. En la práctica, me ayudan las herramientas de base de datos, Query Monitor y los ayudantes especializados que preparan wp_options en un formato legible. Si quiero profundizar más, miro los plugins asociados y compruebo si los datos son realmente necesarios a nivel global. Si quieres ceñirte a un enfoque estructurado, puedes encontrar una guía en Optimización específica de las opciones de carga automática una guía útil para el ajuste sistemático. Lo importante sigue siendo: medir primero y abordar después, así se evitan efectos secundarios.
Práctica de medición: consultas SQL concretas
Empiezo con algunas consultas robustas que funcionan en casi cualquier entorno. Importante: Adapta el prefijo de la tabla (wp_ es solo un ejemplo) y haz pruebas de puesta en escena.
-- Tamaño total de todos los valores de carga automática en KB
SELECT ROUND(SUM(LENGTH(option_value)) / 1024, 1) AS autoload_kb
FROM wp_options
WHERE autoload = 'yes';
-- Top-20 por tamaño
SELECT nombre_opción, LENGTH(valor_opción) COMO bytes
FROM wp_options
WHERE autoload = 'yes'
ORDER BY bytes DESC
LIMIT 20;
-- Identificar transitorios grandes en autoload
SELECT nombre_opción, LENGTH(valor_opción) COMO bytes
FROM wp_options
WHERE autoload = 'yes'
AND option_name LIKE '_transient_%' ESCAPE ''
ORDER BY bytes DESC
LIMIT 50;
-- Detectar opciones huérfanas de un plugin remoto (ajustar el prefijo del nombre)
SELECT nombre_opción
FROM wp_options
WHERE nombre_opción LIKE 'mi_plugin_%' ESCAPE ''; En configuraciones multisitio, repito las consultas para cada tabla del blog (wp_2_options, wp_3_options, ...). Los datos heredados a menudo se acumulan en los sitios individuales, mientras que el sitio principal se ve limpio. Si exporta los resultados como CSV, puede filtrarlos y agruparlos fácilmente y documentar las tendencias.
WP-CLI: intervenciones rápidas sin phpMyAdmin
Me gusta usar WP-CLI para el ajuste fijo. Una exportación de antemano es obligatorio, entonces yo trabajo paso a paso y verificar después de cada cambio.
# Copia de seguridad
exportar wp db
# Salida lista autoload (filtro autoload=on)
wp option list --autoload=on --format=table
# Borrar transitorios caducados
wp transient delete --expired
# Borrar todos los transitorios (incluidos los no caducados) - con cuidado
wp transient delete --all
# Establecer opción individual a autoload=no
wp option update mi_opcion_nombre "valor" --autoload=no
# Eliminar opción específica (¡compruébelo primero!)
wp option eliminar mi_nombre_opcion WP-CLI agiliza las tareas rutinarias y reduce los clics erróneos. Si es necesario, combino la salida con sencillas herramientas de shell para resaltar valores grandes u ordenar listas.
Transitorios: temporales, a menudo inflados
Los transitorios sirven como memoria intermedia, Sin embargo, a menudo se dejan por ahí y acaban en todas las peticiones con autoload=“yes“. Las entradas _transient_* grandes en particular se acumulan cuando los trabajos fallan o los plugins las mantienen durante demasiado tiempo. Regularmente elimino los transitorios caducados porque WordPress los crea de nuevo cuando es necesario. Los plugins de estadísticas y API en particular escriben rápidamente cientos de registros de datos que no tienen cabida en el autoload global. Si quieres conocer el trasfondo, puedes consultar la guía Transitorios como fuente de carga y programar limpiezas cíclicas. En cuanto desaparece el lastre, el total de carga automática suele disminuir notablemente en cuestión de minutos.
Caché de objetos (Redis/Memcached): bendición y límite
Una caché de objetos persistente intercepta las consultas a la base de datos y mantiene las opciones en la memoria de trabajo. Esto reduce la carga IO, pero no resuelve el problema básico de los grandes datos de carga automática: Los datos todavía tienen que ser (de)serializados y procesados por PHP, y ocupan RAM en la caché. Si el paquete autoload crece significativamente, los requisitos de memoria de la caché también aumentan - hasta e incluyendo desalojos y pérdidas de caché. Mi regla práctica: primero „adelgaza“ el autoload, y luego activa la caché de objetos. De este modo se utiliza la caché como acelerador, no como hoja de parra.
Paso a paso: ordenar sin riesgos
Empiezo cada puesta a punto con una Copia de seguridad y pruebo los cambios en un entorno de ensayo, si es posible. A continuación, determino el tamaño total actual de la carga automática y documento los valores iniciales para poder comparar los resultados. A continuación, elimino las opciones obsoletas de los plugins que se han desinstalado hace tiempo y borro los transitorios caducados. Si quedan opciones grandes que todavía están en uso, elimino la bandera autoload del conjunto de carga global. Después de cada paso, compruebo el alcance de las funciones y los tiempos de carga para reconocer inmediatamente las consecuencias. Esta disciplina me ahorra mucho tiempo después porque siempre sé exactamente qué acción tuvo qué efecto.
Rollback, pruebas y seguimiento
Mantengo un nivel de reserva para cada cambio: Exportación de base de datos, registro de cambios con fecha/hora, lista de valores option_name cambiados y métricas medidas (TTFB, renderización de página, tiempo de respuesta del administrador). Hago pruebas como mínimo:
- Frontend: Página de inicio, plantilla con muchos widgets/códigos cortos, función de búsqueda.
- Backend: Inicio de sesión, panel de control, páginas de configuración central, editor.
- Tareas: eventos Cron, reconstrucción de cachés, funciones de importación/exportación.
Si una función se bloquea después de un cambio, restablezco específicamente la opción anterior o vuelvo a poner el indicador de carga automática en „sí“. Los pasos pequeños y comprensibles son el mejor seguro.
Configurar autoload de sí a no - así es como procedo
Grandes opciones disponibles en la parte delantera raro Yo prefiero establecer autoload=“no“ en lugar de borrarlos. Los candidatos típicos son los ajustes específicos del administrador, los registros raros o las cachés temporales. Es importante conocer el origen de la opción y luego valorar si la carga global tiene sentido. Muchos plugins pueden recargar sus datos exactamente donde se necesitan. Me aseguro de no tocar ninguna opción del núcleo y de seguridad que WordPress necesita para arrancar. Si procedes paso a paso y pruebas cada cambio, reduces el riesgo prácticamente a cero.
Criterios de decisión: ¿qué no debe cargarse globalmente?
Evalúo cada opción en función de cuatro preguntas:
- ¿Se aplica realmente a todas las páginas y a todos los visitantes? Si no es así, salga de la carga automática.
- ¿Cambia con frecuencia? Los datos volátiles no deben estar en Autoload.
- ¿Es grande (de varios KB a MB) o una matriz/objeto? Entonces es mejor recargarlo específicamente.
- ¿Es crítico para la seguridad o el arranque (URL del sitio, sales, banderas básicas)? Entonces, no.
En los casos límite, pongo la opción en „no“ a modo de prueba y compruebo a fondo el frontend/backend. Si todo permanece estable, me ahorro permanentemente los costes por solicitud.
Culpables típicos y contramedidas
- Buffered CSS/JS strings or builder layouts: Divide blobs grandes, guárdalos en caché en archivos o cárgalos sólo cuando sea necesario.
- Datos estadísticos/API: Como transitorio sin autoload o externalizar a una tabla independiente.
- Trabajos cron o API fallidos: limite la lógica de reintento, limpie los transitorios, ajuste los intervalos de trabajo.
- Registros de depuración/errores: Nunca mantener en autocarga, introducir rotaciones, utilizar ubicaciones de almacenamiento separadas.
Para desarrolladores: guardar correctamente en lugar de inflar
Si creas tus propios plugins/temas, evitas el lastre del autoload desde el principio. Yo uso:
// Configuración pequeña y global (autoload=yes está bien)
add_option( 'my_plugin_flag', '1' );
// Deliberadamente no cargar datos más grandes/raros globalmente
add_option( 'my_plugin_cache', $larger_array, '', 'no' );
// Desde WP 5.5: autoload controlable durante la actualización
update_option( 'my_plugin_cache', 1TP4New_data, 'no' );
// Recargar localmente si es necesario
$data = get_option( 'my_plugin_cache' ); Almaceno los datos grandes y estructurados en tablas separadas o como archivos. Los registros y las cachés temporales tienen TTL claros. De este modo, el frontend es más ágil y el backend reacciona más rápido.
Examinar críticamente el panorama de los plugins
Muchos problemas de autoload surgen porque hay demasiados Extensiones Almacenar datos globalmente. Elimino los plugins que apenas necesito y sustituyo los candidatos llamativos por alternativas más sencillas. Antes de instalar un plugin, compruebo si la función ya está disponible en el tema o en WordPress. También me fijo en qué registros de datos escribe un plugin en wp_options y si aparecen matrices grandes. Si adoptas un enfoque estructurado, normalmente encontrarás en estos pasos la mayor ventaja para obtener respuestas más rápidas. Esta guía resume ideas prácticas útiles: Consejos para optimizar la base de datos.
Utilizar con sensatez lugares de almacenamiento alternativos
No toda la información pertenece a wp_options. Mis reglas generales:
- Transitorios con datos más grandes: Transitorios sin autoload o tablas propias.
- Estructura compleja que se actualiza con frecuencia: tabla propia con índices adecuados.
- Activos estáticos (grandes bloques CSS/JS): En archivos con una estrategia de ruptura de caché.
- Datos relacionados con el usuario: Meta de usuario en lugar de opciones globales.
De este modo, la tabla de opciones se mantiene pequeña y la cantidad de autocarga estable, la palanca más importante para obtener respuestas iniciales rápidas.
Vigilancia y prevención para el futuro
Después de la limpieza, me ocupo de esto con regularidad Monitoreo antes. Un vistazo rápido al tamaño total de la carga automática y a las entradas más grandes de cada mes suele ser suficiente. Si los valores aumentan, compruebo los plugins instalados o actualizados recientemente. También echo un vistazo a Herramientas → Estado del sitio web, ya que a menudo contiene información útil sobre las opciones cargadas automáticamente. Una fecha de limpieza recurrente evita que los datos vuelvan a acumularse a lo largo de los meses. Esto significa que el sitio sigue siendo predeciblemente rápido - sin constantes acciones de los bomberos.
Multisitios y sitios con gran cantidad de datos
En instalaciones multisitio, compruebo cada sitio por separado, ya que los datos de carga automática se almacenan en tablas independientes para cada blog. A menudo, sólo los sitios individuales están „fuera de control“. En entornos con muchos datos (por ejemplo, grandes catálogos, muchas integraciones), también merece la pena una estrategia de datos clara: poca autocarga, TTL coherentes para los transitorios, externalización de los procesos de back office a cron jobs y renovación periódica de las respuestas en caché en lugar de cargar completamente cada página.
Papel del alojamiento
Los grandes bloques de carga automática golpean a los más débiles Recursos significativamente más duros que los entornos de alto rendimiento. Bases de datos rápidas, versiones de PHP actualizadas y niveles de caché razonables disimulan algunos efectos, pero no los anulan. Por lo tanto, combino wp_options limpias con un alojamiento adecuado para que el sitio no se colapse ni siquiera durante los picos de tráfico. Los que escalan se benefician doblemente: menos lastre en autoload reduce la latencia, una infraestructura más fuerte proporciona reservas. Esta interacción beneficia a TTFB, First Contentful Paint y la estabilidad del servidor. La gran ventaja: el sitio sigue respondiendo, aunque las campañas traigan más visitantes.
Detalles de la base de datos: qué ayuda técnicamente (y qué no)
La consulta autoload extrae todas las entradas con autoload=“yes“. Un índice adicional en esta columna puede acelerar la selección en algunas configuraciones, pero no sustituye a la limpieza, ya que el resultado debe procesarse por completo. Un motor de base de datos moderno, una reserva de búferes suficiente y una E/S estable son importantes. Utilizo estas medidas con sentido de la proporción:
- Índice opcional: autocarga (sólo tras comprobación; aporta algunas ventajas con tablas muy grandes).
- Cotejo/conjunto de caracteres coherente para evitar problemas inesperados de longitud/codificación.
- Análisis periódico y optimización de la mesa tras los ajustes importantes.
Ejemplo de plan rápido para 60 minutos
Empezaré con un Copia de seguridad e inmediatamente mido el tamaño total de autoload para conocer la salida. A continuación, elimino los transitorios caducados, limpio las opciones huérfanas de plugins anteriores y compruebo los 10 primeros por tamaño. Configuro los conjuntos de datos grandes y no globales como autoload=“no“, pruebo las páginas importantes y comparo el TTFB y el tiempo de respuesta del backend. Después anoto el nuevo total para poder probar el éxito más adelante. Si el sitio parece notablemente más rápido, planifico una supervisión mensual y una comprobación semestral en profundidad. Esta hora suele generar más velocidad que muchos ajustes genéricos juntos.
Métricas: hacer verificable el éxito
Como mínimo, documento el antes y el después de la puesta a punto:
- Tamaño total de autoload en KB/MB y número de entradas autoload=“yes“.
- TTFB y tiempo de renderizado completo para 2-3 páginas representativas.
- Tiempo de respuesta del backend (inicio de sesión, páginas de configuración, editor).
- Tiempo de base de datos según Profiling/Query Monitor.
Cualquiera que demuestre que carga 30-70% menos autoload suele ver estos efectos directamente en los ratios, especialmente con alojamiento compartido, muchos visitantes simultáneos o páginas con mucha API.
Resumen de la práctica
Las páginas lentas suelen estar hinchadas Carga automática-data en wp_options, no una falta de almacenamiento en caché. Si mide el total, identifica las entradas más grandes y las purga sistemáticamente, reducirá notablemente el TTFB y la carga del servidor. A partir de alrededor de 1 MB de datos de carga automática, merece la pena una comprobación exhaustiva; a partir de varios MB, apenas hay forma de evitar una limpieza. Los transitorios, los registros, las matrices de caché y las opciones huérfanas ofrecen las ganancias más rápidas. Con un mantenimiento regular, decisiones claras sobre los plug-ins y una supervisión específica, la instalación sigue respondiendo permanentemente. Es precisamente este enfoque el que marca la diferencia entre una instancia de WordPress resistente y un rendimiento ágil.


