Analizo WordPress Autoload-data, identifica las entradas sobredimensionadas en la tabla wp_options y elimina las candidatas críticas. Esto reduce el tamaño total de las opciones cargadas automáticamente, reduce el TTFB, alivia la RAM y acelera de forma fiable el backend y el frontend.
Puntos centrales
Los siguientes puntos le darán una visión general compacta antes de entrar en más detalles.
- Tamaño de carga automática Sea pequeño (ideal: menos de 1-2 MB)
- Principales contaminadores encontrar (transitorios, matrices grandes, restos de enchufes)
- Comprobaciones SQL por tamaño, número y entradas principales
- Específico Establecer en autoload=’no‘ o eliminar
- Monitoreo y establecer un mantenimiento mensual
He mantenido deliberadamente la lista escueta y centrada para que pueda reconocer inmediatamente las palancas más importantes. Cada medida tiene un impacto directo en los tiempos de carga perceptibles. Los pasos pueden probarse e invertirse con seguridad si es necesario. Combino el análisis, la limpieza y la supervisión en un proceso claro. Así es como se consigue una rapidez sostenible Páginas vistas.
Por qué la carga automática de datos ralentiza el rendimiento
Con cada solicitud, WordPress carga todas las opciones con carga automática=’sí’ en la memoria - independientemente de si tu tema o un plugin los necesita actualmente. Si la suma de estos valores crece hasta varios megabytes, los requisitos de latencia, TTFB y RAM aumentan significativamente. Las grandes matrices serializadas, los transitorios obsoletos y los restos de plugins desinstalados, en particular, inflan el volumen de carga automática. Esto conlleva un trabajo innecesario para PHP y MySQL y hace que el backend en particular se ralentice notablemente. Por lo tanto, doy prioridad a todo lo que entra en la memoria con cada solicitud de página y elimino sistemáticamente la Lastre.
Mida el estado real: Compruebe rápidamente el tamaño y el número
Antes de cambiar nada, determino la situación actual de los datos de las opciones cargadas automáticamente en el wp_opciones-tabla. Para ello, utilizo una simple consulta SQL para el tamaño total y le sumo el número de entradas. Traduzco el resultado en MB, me fijo objetivos y planifico los siguientes pasos. Si el total supera 1-2 MB o el número es significativamente superior a 500, inicio un análisis centrado. Este primer vistazo ya crea claridad y establece las Prioridades fijo.
-- Tamaño total (bytes) de los datos de carga automática
SELECT SUM(LENGTH(option_value)) AS autoload_size
FROM wp_options
WHERE autoload = 'yes';
-- Número de entradas de autocarga
SELECT COUNT(*) AS autoload_count
FROM wp_options
WHERE autoload = 'yes';
Identificar y priorizar las entradas críticas
Primero identifico los trozos más grandes, porque unas pocas opciones a menudo causan la mayoría de las Carga. A menudo encuentro transients (_transient_*, _site_transient_*), definiciones de roles (_user_roles_) o logs y estadísticas de plugins que no se usan todo el tiempo. A los plugins de WooCommerce o SEO también les gusta almacenar matrices extensas. Echo un vistazo de cerca a todo lo que supere los 100-200 KB por opción y elimino sistemáticamente los transitorios de más de 50 KB. Si desea profundizar, puede leer mi más detallada Optimización de bases de datos como una guía adicional para ayudarle a trabajar a través de la secuencia de medidas de una manera sensata.
-- Hacer visibles en MB los principales emisores
SELECT nombre_opción, autoload,
ROUND(LENGTH(option_value) / 1024 / 1024, 2) AS size_mb
FROM wp_options
WHERE autoload = 'yes'
ORDER BY tamaño_mb DESC
LIMIT 20;
Análisis en profundidad: patrones, prefijos y serialización
Para poner orden de forma selectiva, corté la cantidad de autoload según prefijos y formularios de datos. Esto me permite ver rápidamente qué plugins o áreas funcionales contribuyen en mayor medida y si predominan las matrices grandes y serializadas. Puedo reconocer los datos serializados por un patrón de inicio como a:... (matriz) o O:... (objeto). Las matrices grandes y anidadas son candidatas típicas para autoload=no o una división en unidades más pequeñas.
-- Distribución según prefijos (simples)
SELECT
SUBSTRING_INDEX(nombre_opción, '_', 1) COMO prefijo,
COUNT(*) AS cnt,
ROUND(SUM(LENGTH(option_value)) / 1024 / 1024, 2) AS size_mb
FROM wp_options
WHERE autoload = 'yes'
GROUP BY prefix
ORDER BY tamaño_mb DESC
LIMIT 20;
-- Identificar matrices serializadas grandes
SELECT nombre_opción,
LENGTH(option_value) AS len
FROM wp_options
WHERE autoload = 'yes'
AND valor_opción REGEXP '^a:[0-9]+:'
ORDER BY len DESC
LIMIT 20;
-- Comprobar contenido de tipo JSON (sólo filtro aproximado)
SELECT nombre_opción,
LENGTH(option_value) AS len
FROM wp_options
WHERE autoload = 'yes'
AND option_value LIKE '{%'
ORDER BY len DESC
LIMIT 20;
Si encuentra varias opciones muy grandes para un plugin, la función Estrategia de almacenamiento el problema (por ejemplo, cachés o registros en una única opción). A menudo esto puede mitigarse: Dividir los datos, eliminar las partes innecesarias o reducir el registro a través de un ajuste del plugin.
Limpieza selectiva: Transitorios, autoload=no, opciones huérfanas
En el caso de los transitorios obsoletos, elimino las entradas caducadas porque suelen ocupar espacio innecesario Memoria. Configuro las opciones grandes y poco utilizadas como autoload=’no’ y pruebo el funcionamiento de la página inmediatamente después. Si encuentro rastros de plugins remotos, limpio sus prefijos de la tabla wp_options de forma controlada. Cada paso se lleva a cabo con una copia de seguridad actualizada y un nivel de fallback claro para que siempre estés seguro. De esta manera, la suma de autoload se reduce rápidamente y el TTFB beneficios.
-- Elimine los transitorios caducados (¡haga primero una copia de seguridad!)
DELETE FROM wp_options
WHERE option_name LIKE '_transient_%'
OR option_name LIKE '_site_transient_%';
-- Eliminar una opción grande de la carga automática
UPDATE wp_options
SET autoload = 'no'
WHERE option_name = 'EXAMPLE_OPTION';
-- Elimina las opciones huérfanas del plugin con un prefijo reconocible
DELETE FROM wp_options
WHERE option_name LIKE 'altplugin_%';
Borrado seguro en lugar de eliminación a ciegas
Cuando yo sólo caducado transitorios, utilizo consultas específicas que tienen en cuenta las opciones de tiempo de espera. Esto es más suave y reduce los efectos secundarios al almacenar en caché. Alternativamente, WP-CLI hace el trabajo con un solo comando.
-- Borrar sólo los transitorios (sitio) caducados (más seguro)
DELETE a, b
FROM wp_options a
JOIN wp_options b
ON b.option_name = REPLACE(a.option_name, '_transient_', '_transient_timeout_')
WHERE a.option_name LIKE '_transient_%'
AND a.option_name NO LIKE '_transient_timeout_%'
AND b.option_value < UNIX_TIMESTAMP();
DELETE a, b
FROM wp_options a
JOIN wp_options b
ON b.option_name = REPLACE(a.option_name, '_site_transient_', '_site_transient_timeout_')
WHERE a.option_name LIKE '_site_transient_%'
AND a.option_name NO LIKE '_site_transient_timeout_%'
AND b.option_value < UNIX_TIMESTAMP();
-- WP-CLI (recomendado): eliminar transitorios caducados
# sitio único
wp transient delete --expired
# Multisitio
wp transient delete --expired --network
Para un Rollback Guardo por adelantado las opciones más grandes por separado: recopilar nombres, exportar contenido, registrar cambios. Esto me permite restaurar valores individuales en cuestión de segundos en caso de problema.
# Exportar los 50 mejores nombres de autoload
wp db consulta "
SELECT nombre_opción
FROM wp_options
WHERE autoload='yes'
ORDER BY LENGTH(valor_opción) DESC
LIMIT 50
" --skip-column-names > big_options.txt
# Guardar contenido (formato de texto simple)
while read -r NOMBRE; do
printf '=== %s ===n' "$NAME" >> backup_options.txt
wp option get "$NAME" >> backup_options.txt
hecho < big_options.txt
Mantenimiento de la tabla e higiene de la memoria
Tras la limpieza, optimizo la tabla para que los bloques de datos borrados queden libres y el Base de datos vuelve a funcionar de forma eficiente. Este paso reduce la fragmentación y ayuda a MySQL con futuras consultas. A continuación, compruebo de nuevo el tamaño de autoload para que el éxito siga siendo medible. Opcionalmente, una caché de objetos como Redis o Memcached acelera adicionalmente la carga de las opciones restantes. Incluso sin una caché, notará el efecto inmediatamente porque se almacenan menos datos por petición en el archivo RAM caminata.
-- Liberar memoria y actualizar estadísticas
OPTIMIZAR TABLA wp_options;
Automatizar con herramientas y WP-CLI
Ahorro tiempo en instalaciones recurrentes con Herramientas y scripts. WP-CLI me permite realizar actualizaciones masivas, por ejemplo para establecer varias opciones grandes a autoload=’no’ y comprobarlas directamente. Utilizo plugins lean con registro claro para limpiar regularmente los transitorios y optimizar las tablas. Antes de cada automatización, documento los valores iniciales para poder sopesar las ventajas y los riesgos. Si desea obtener más velocidad de wp_options, puede encontrar más información en Ajuste del rendimiento de wp_options ideas adicionales para la combinación sensata de análisis y scripting.
# Ejemplo: Recorrer la lista de nombres de opciones grandes y desactivar autoload
while read -r NOMBRE; do
wp option update "$NAME" "$(wp option get "$NAME")" --autoload=no
hecho < nombres.txt
Vigilancia y prevención: TTFB y RAM de un vistazo
Tras la limpieza, configuro una rutina sencilla para que no vuelva a aparecer el total de autoload. aumenta. Una comprobación mensual del tamaño total, complementada con las 10 opciones principales, suele ser suficiente. Si el valor aumenta significativamente, compruebo los plugins instalados más recientemente y su configuración. Al mismo tiempo, controlo el TTFB, el uso de la memoria PHP y el tiempo de la base de datos para visualizar las mejoras. Estas medidas tienen un mayor efecto en un buen alojamiento, porque el rendimiento de E/S es el Ganancias reforzado adicionalmente.
Umbrales y medidas de un vistazo
Para clasificar los siguientes pasos, utilizo claramente Límites, que permiten tomar decisiones rápidas. Primero doy prioridad a los mayores culpables, sin perder tiempo con entradas no críticas. La tabla muestra valores umbral típicos y mi respuesta estándar a ellos. No sustituye a un análisis, pero le da confianza para las primeras rondas. Si se profundiza, se pueden hacer ajustes más precisos y optimizar los umbrales. Controla condensar.
| Tipo | Valor umbral | Acción |
|---|---|---|
| Tamaño total de la carga automática | < 1-2 MB | Mantener, comprobar mensualmente |
| Tamaño total de la carga automática | 2-5 MB | Comprueba las 10 opciones más grandes, limpia los transitorios |
| Tamaño total de la carga automática | > 5 MB | Reducción inmediata, autoload=no para las opciones poco utilizadas |
| Opción única | > 100-200 KB | Compruebe la causa, configure autoload=no si es necesario. |
| Transitorios | > 50 KB | Borrar, volver a crear más tarde con la caché limpia |
Evite riesgos y realice pruebas con seguridad
Nunca cambio las opciones críticas sin Copia de seguridad y sin un plan para el camino de vuelta. Antes de borrar, compruebo si las opciones centrales del núcleo como siteurl o home están implicadas, ya que no las toco. Después de cada cambio, cargo el frontend y el backend en una nueva sesión para reconocer los efectos de la página desde el principio. En caso de problemas, restauro el estado anterior a partir de la copia de seguridad y procedo en pequeños pasos. De este modo, la optimización sigue siendo controlable y se conserva el Estabilidad de su instalación.
Ejemplo práctico: de la lentitud a la capacidad de respuesta
En una instalación con más de 20 MB de datos de carga automática, primero eliminé los transitorios grandes y luego configuré tres opciones voluminosas para autoload=no set. Después de un OPTIMIZE TABLE, los tiempos de espera TTFB y backend se hicieron visibles sin que las funciones fallaran. A continuación, reduje los restos de plugins huérfanos que quedaban tras la desinstalación. La nueva medición mostró un total de autoload cercano a 2 MB, lo que aceleró notablemente las páginas. Cada acción era medible, reversible e inmediatamente trajo Ventajas.
Opciones básicas y escollos típicos
Además de los trozos obvios, hay opciones que debes tratar con especial cuidado. Por ejemplo siteurl, Inicio, plugins_activos, hoja de estilo/plantilla, permalink_estructura, rewrite_rules, cron y wp_user_roles. Algunos de ellos son de gran tamaño (p. ej. rewrite_rules) y a menudo autoload=’yes’. Reduzco su tamaño, pero los desacoplamos no descuidadamente de la carga automática. En caso de rewrite_rules Compruebo los tipos de post personalizados, taxonomías y plugins con mis propias reescrituras y ordeno en lugar de sólo trabajar en el síntoma. Es cron hinchado, desactivo los eventos duplicados y limpio los ganchos; simplemente cambiando a autoload=no activa el Causa no.
Buenas prácticas para desarrolladores: Uso correcto de las opciones
Muchos problemas de autoload surgen ya durante el desarrollo. Mis directrices:
- Datos efímeros (cachés, resultados, listas temporales) en Transitorios y, si es posible, no se autocarguen.
- Descomponer las grandes estructuras en opciones más pequeñas y específicas; nada de „contenedores de recogida“ del tamaño de megabytes.
add_option( $name, $value, '', 'no' )si no se necesita algo para cada solicitud.- Ninguno Registros o volcados de depuración en opciones; utilice tablas o archivos/observabilidad separados para ello.
- En lugar de matrices gigantes serializadas, cambie a varias opciones o a una tabla separada si es necesario - mejor Carga parcial.
- Invalidación exacta: Borra las cachés específicamente en lugar de „borrar todo“. Esto mantiene los datos pequeños y estables.
// Ejemplo: Crear opción deliberadamente sin autoload
add_option( 'mi_plugin_cache', $data, '', 'no' );
// Garantizar que las matrices grandes no crezcan innecesariamente
update_option( 'my_plugin_cache', array_slice( $data, 0, 1000 ), false );
Caché de objetos: ventajas y limitaciones
Una caché de objetos persistente (Redis/Memcached) reduce la carga de la base de datos, pero no elimina Autoload-Bloat. Las grandes sumas de autocarga pasan directamente de la caché a la memoria PHP. Esto ahorra consultas, pero aumenta los requisitos de RAM y el trabajo de deserialización. Por lo tanto, se aplica lo siguiente reducir, y luego la caché. Tras la limpieza, vacíe la caché una vez para que se creen registros de datos limpios y más pequeños.
Índices, motor e integridad de las wp_options
Por defecto, existen índices significativos en nombre_opción y carga automática. En las instalaciones migradas manualmente, a veces se eliminaban o dañaban. Compruebo los índices y los restablezco si es necesario. También presto atención a InnoDB como Motor de almacenamiento y un formato de fila adecuado para que los valores grandes puedan intercambiarse de forma eficaz.
-- Comprobar índices
SHOW INDEX FROM wp_options;
-- (¡Sólo si falta!) Crear nuevo índice sobre autoload
CREATE INDEX autoload ON wp_options (autoload);
-- (Opcional) Cambiar a InnoDB y formato de fila moderno
ALTER TABLE wp_options ENGINE=InnoDB, ROW_FORMAT=DYNAMIC;
Importante: Sólo realice cambios estructurales con una ventana de copia de seguridad y mantenimiento. A menudo la reducción de autoload más OPTIMIZAR TABLA, para lograr efectos significativos.
Solución de problemas con recurso: adopte un enfoque mensurable
Tras los cambios, controlo específicamente los siguientes ratios por petición: TTFB, recuento/tiempo de consulta, pico de memoria y tiempo de ejecución de PHP. Para realizar análisis en profundidad, merece la pena activar un registro de consultas lentas en la base de datos durante un breve periodo de tiempo y -en entornos de desarrollo- un perfilador. Es importante analizar cada cambio aislado primero los transitorios, luego las grandes opciones individuales y después el mantenimiento de la tabla.
-- Ejemplo: Hacer visibles en el log las consultas para las opciones de autoload
SET GLOBAL slow_query_log = 1;
SET GLOBAL long_query_time = 0.2; -- 200ms
-- Desactivar de nuevo después de las pruebas
Casos especiales: WooCommerce, SEO y plugins de estadísticas
Los plugins de comercio electrónico y análisis suelen generar grandes opciones (índices de productos, informes, historial). Compruebo si las cachés pueden reconstruirse, si hay ajustes para el tamaño de la caché y si determinadas funciones de informe son realmente necesarias todo el tiempo. Con WooCommerce, merece la pena echar un vistazo a los transitorios de sesión e inventario; con los plugins SEO, presto atención a las cachés de índices y metadatos. Principio: Mantener la función, limitar la memoria - Es mejor regenerar con más frecuencia que autocargar permanentemente valores gigantes.
Puesta en escena, despliegue y controles repetibles
Llevo a cabo todos los pasos más arriesgados primero en un Entorno de ensayo y guardo allí la secuencia específica de comandos. A continuación, implemento este libro de jugadas en producción. Creo dos mininformes para las comprobaciones recurrentes: tamaño/número total y 10 tamaños principales. Esto mantiene la monitorización ligera y asegura reacciones rápidas cuando una actualización del plugin aumenta de nuevo la cantidad de autoload.
# Informe rápido 1: Tamaño y número
wp db query "SELECT SUM(LENGTH(option_value)) FROM wp_options WHERE autoload='yes';"
wp db query "SELECT COUNT(*) FROM wp_options WHERE autoload='yes';"
# Informe rápido 2: Top-10
wp db query "
SELECT option_name, ROUND(LENGTH(option_value)/1024/1024,2) AS mb
FROM wp_options WHERE autoload='yes'
ORDER BY mb DESC LIMIT 10;
"
Ajuste: datos de varios sitios y de toda la red
En las configuraciones multisitio, también compruebo la opción wp_sitemetaporque allí se encuentran los ajustes de toda la red. Las entradas grandes se comportan de forma similar y pueden ralentizar varios sitios. Mido los totales y las entradas más importantes, luego decido la limpieza y la cuota de autoload por red. La comprobación se realiza por separado para cada sitio, de modo que no se pasen por alto las características locales. De este modo, también mantengo la capacidad de respuesta de las redes más grandes y protejo los sitios compartidos. Recursos.
-- Comprobar datos de toda la red (multisitio)
SELECT SUM(LENGTH(meta_value)) AS network_meta_size FROM wp_sitemeta;
SELECT meta_key, LENGTH(meta_value) AS len
FROM wp_sitemeta
ORDER BY len DESC
LIMIT 10;
Más ayuda para la aplicación estructurada
Si desea aplicar el procedimiento paso a paso, utilice un compacto Guía como complemento a tus propias notas. Empieza con la medición, guarda una copia de seguridad, limpia los transitorios y luego comprueba gradualmente las opciones principales. De este modo, podrá mantener el riesgo en un nivel manejable y ver mejoras claras después de cada ronda. Este resumen proporciona una estructura adicional: wp_options optimización. Con esta cuadrícula se mantiene la coherencia y no se pierde ningún Pasos fuera de la vista.
Breve resumen: Las palancas más importantes para las páginas rápidas
Mantengo las opciones que se cargan automáticamente en un tamaño pequeño, ordeno los transitorios, configuro los trozos que se usan poco en autoload=no y optimizar la mesa. Medir antes y después de cada ronda hace visible el efecto y crea seguridad. Con valores umbral claros, encuentro las causas más importantes en cuestión de minutos y empiezo por ahí primero. Una supervisión sencilla evita que el total de la carga automática se vuelva a disparar más tarde. Así consigo que su instalación de WordPress esté permanentemente al día y fortalezco el Actuación notable.


