Hoy quiero hundirme en una especie de tema esotérico: la autoading de la opción WP. No es algo que muchos desarrolladores de WordPress puedan golpearlo o necesitarlo. Pero el vago conocimiento de este tema me ha estado eximiendo durante mucho tiempo y confusión en un proyecto de cliente, por lo que quiero ayudarlo a comprender cómo el uso ocasional de la función Upd_option sin comprender la característica de las opciones automáticas de auto-Autoload de WordPress puede causar dolor y dolor. Un resumen rápido de las opciones de WP, la carga automática y la limpieza antes de hundirme en mi historia, quiero ofrecer algunas definiciones para ayudar a que mi historia tenga más sentido:
WP_OPTIONS es una tabla de base de datos de WordPress. En general, el desarrollador WordPress llamará a los valores almacenados aquí “Opciones”, sin agregar muchos más detalles. Estas “opciones” son para un complemento o un tema para almacenar la configuración de usuario controlable sobre su funcionalidad. Por lo tanto, si puede almacenar una dirección de su dirección de comercio electrónico, generalmente se almacenará en una fila en la tabla WP_options.
Update_option es la función de WordPress con más frecuencia que se usa para establecer y actualizar las opciones. Es relativamente fácil de usar: proporcione un nombre para su opción y luego el valor que desea almacenar WordPress para ello.
Los “transitorios”, que son tangenciales para esta historia, pero un problema común en los objetivos generales de las opciones de WP, son valores a corto plazo en la tabla de opciones en algunos sitios de WordPress. Los transitores se usan cuando WordPress no tiene un “almacenamiento en caché de objetos” más completo.
La “memorización de caché de los objetos” es cuando WordPress almacena intermediarios en un almacén de datos de memoria, como Redis o Memcache (D), o en los transitorios de WordPress. Mejoran el rendimiento almacenando el resultado, por ejemplo, de consultas de base de datos costosas para que WordPress no tenga que hacer un recalculación completo cada vez. WordPress se puede establecer en “Carga automática”. “Como puede suponer por el nombre, esto significa que WordPress siempre cargará esta opción para usted en todas las cargas de página. Por qué y cuando no quieras esto es algo que llegaremos en mi historia.
Get_option es la función de WordPress que se usa con mayor frecuencia para hacerse cargo de las opciones que se almacenan en la tabla WP_options. El principal beneficio de esta función es que puede usar el valor almacenado en el objeto, en lugar de hacer una nueva consulta en la base de datos, especialmente para opciones cargadas automáticamente.
Con todos esos hechos en nuestra cabeza, es hora de contarme la historia. No se preocupe demasiado si todos estos hechos no lo han tomado completamente, reanudaremos las facetas importantes de estos detalles a medida que se vuelven relevantes.
Mi historia sobre la carga automática de la opción WP, por lo que tengo un cliente (que no llamaré aquí) con un gran sitio de WordPress. Tuvieron algunos pequeños problemas de rendimiento en su sitio web del lunes, si no años. Obtienen una gran cantidad de tráfico y pagan mucho por el alojamiento web para garantizar que su gran sitio, con mucho contenido, todavía funcione.
Su sitio web de WordPress es bastante antiguo y también es bastante extraño. Soy una publicación que comenzó sus vidas usando una pitón CMS personalizada y luego puse a estos desarrolladores de Python (más o menos) para construir un sitio de WordPress. El primer sitio de WordPress de un desarrollador de Python se hará al menos algunas elecciones inusuales en comparación con las reglas de desarrollo de WordPress que han puesto muchas características en WordPress. (Un problema común que escribí en contra de ella hace años que “aspira el tema”). El tema usa la barra de la hoja de Laravel y, lo que es más importante, tiene muchas otras funcionalidades para el sitio: opciones de decisión publicitaria, una gran parte de El soporte del código y la funcionalidad de la migración. Esta funcionalidad de migración es el código que usaron para retratar el sitio de la antigua cosa personalizada en WordPress. Como encontré un problema, este sitio nunca fue extraordinariamente rápido. Es un gran sitio con miles y miles de artículos. Aunque no está al límite de las capacidades de WordPress, a veces se siente cerca.

Y habían notado que él ha comenzado a comportarse aún más en los últimos meses. Hubo un error aleatorio de 502 y solo una lentitud general. Un colega del equipo ha recurrido a la asistencia de alojamiento, quien recomendó un extraño consejo: apagar el caché de los objetos. Nota: El almacenamiento en caché de objetos es el nombre de WordPress para usar un caché en la memoria (generalmente redis de Memcached) para almacenar intermediarios de WordPress, como la base de datos común y también las opciones automáticas de WP. En general, haz las cosas más rápido. Pero, de hecho, detenerlo parecía ayudar. ¿Pero por qué? ¿Por qué desactivar una función que debería acelerar WordPress lo haría más rápido?
Lo que sucede es que el almacenamiento de los objetos host (por razones de rendimiento razonables) rechaza los “objetos” que tienen un tamaño de más de 1 MB. Y este sitio web había cruzado recientemente la frontera, donde un objeto muy importante para el almacenamiento en caché se convirtió en 1.1 MB de tamaño. Para aquellos que no hablan las dimensiones de los archivos, una cadena de texto suele ser varias decenas de bytes. Los bytes 1000 (o 1024) representan un kilobyte o KB. 1000 (o 1024) kilobytes es un megacect o MB. Entonces fue bastante grande.
WordPress construiría un objeto que represente todas las opciones de WP que están establecidas en carga automática, luego intentaría empujarlo a la capa de caché. Cuando la capa de objeto de almacenamiento en caché rechaza el objeto, WordPress recalcularía este valor. Valor en cuestión: Conjunto de opciones cargadas automáticamente para todo el sitio. Entonces, en lugar de buscarlo una vez en una carga de página, WordPress lo buscó y lo cargó dos veces. Y como discutimos, también fue un gran patológico. El estúpido código de migración La especificidad de lo que estaba sucediendo se reveló cuando el equipo de asistencia analizó nuestra tabla WP_options con una pequeña base de datos: Seleccionar LEGTH (opcion_value), opción_name de wp_options donde autoload = ‘sí’ orden por Legth (opcion_value) Desc límite 20; Los detalles de esta sintaxis SQL no son particularmente importantes. Lo que hace es encontrar los valores más largos (el tamaño más grande) en la tabla WP_options que se establecen en uno mismo. Lo que encontré estaba confundido y obvio. Solo teníamos una opción cargada automáticamente en nuestra base de datos de WordPress, que era de unos 900 kb. Para fotos con archivos de video, esto no es grande. Para el texto o los valores simples de la base de datos, fue confundido por masivo.
Así que cavé en lo que era este alto valor patológico. Encontré el código que poca el valor: una sola función en el tema de WordPress que se hizo para hacer los datos del sitio hace todos estos años. Además, algo sobre este código hizo que se ejecutara de manera intermitente, aumentando continuamente el tamaño de WP_OPTION a medida que el sitio vivía más tiempo. La razón exacta del crecimiento no fue clara y sigue sin estar clara. (Hemos planeado durante meses retirar este tema histórico y cargado de “deudas técnicas”, por lo que tener sentido es para nosotros el valor para las pequeñas empresas). La solución: Desactive la carga automática para esta opción patológica. : En realidad, no hacía nada muy útil para el funcionamiento normal del sitio. Además, la opción que había actualizado estaba llena de datos no deseados adicionales. Es decir, en lugar de almacenar datos útiles, todo lo que se almacenó fue una matriz PHP que regularmente recibió nuevos pares de claves vacíos insertados en él. Quiero decir: basura innecesaria. Por lo tanto, la solución fue bastante simple: solo tiene que hacer el giro de la base de datos de WordPress WP_OPTIONS para no tener el valor “sí” para la auto -retraso para este alto valor hilarante.

Lo que hizo esta limpieza de la tabla WP_options fue hacerlo para que pudiéramos reactivar el almacenamiento de objetos para el sitio y obtener las ganancias de rendimiento deseadas. Entonces fue un beneficio mutuo: hice que el sitio tuviera menos problemas de caché. Y deshacerse de estos problemas significaba la reactivación de la caché, sería aún más rápido. Lecciones que me han enseñado sobre la limpieza de opciones de WP para decir algo que puede darse cuenta hasta ahora, esta no es una guía definitiva para la limpieza de WP-OPTS. Si está buscando una guía completa para la limpieza de opciones de WP, vea esta publicación de Kinsta. Más bien, comparto una historia sobre cómo creo que WordPress Performance y WP_options Self -Load -Load: se ha sorprendido, con la esperanza de que algún día pueda ayudarlo. Me gustaría señalar las lecciones específicas que aprendí sobre la gestión de las opciones de WordPress: mantener pequeñas opciones. Esta es una práctica regular. Pero ver una matriz en serie en la base de datos de WordPress con varios miles de claves realmente me convenció de la importancia de usar conjuntos de datos simples y pequeños en su tabla WP-OPTS.

Piense críticamente en la actualización hacer una carga automática. Lo haría bastante simple cambiando una opción de actualización básica de Update_option (‘my_option’, ‘valor’); ser update_option (‘my_option’, ‘valor’, ‘no’); . (Si no especifica un valor para el tercer parámetro $ Autolad, Update_Option es predeterminado ‘sí’.) No ponga el complemento de migración en un tema. Agregar un código de migración a un tema de WordPress es la definición misma de lo que quería decir con el “tema de WordPress”. Coloque ese código en un complemento que desactive y elimínelo tan pronto como haya completado la migración. No hay necesidad de mantenerlo cerca, corriendo todo el tiempo, cuando no debe hacer nada. (Y haz algo sorprenderá y confundirá a los administradores del sitio durante tres años).

Una historia sobre la carga automática de la opción WP: un wp_options limpio
Tags Una historia sobre la carga automática de la opción WP: una limpieza de WP
homefinance blog