Una guía para los transitorios en WordPress

Publicado: 2023-02-12

Como desarrollador de WordPress, probablemente ya sepa lo importante que es el rendimiento para un sitio web exitoso. Sin embargo, comprender los transitorios en WordPress y cómo te ayudarán a optimizar tus proyectos puede ser un poco complicado.

Afortunadamente, cuando los desglosas, los transitorios no son tan difíciles de entender. Siempre que tenga en cuenta algunas pautas clave, debería estar bien encaminado para incorporarlas en su próximo complemento de WordPress.

En esta publicación, proporcionaremos una descripción general de lo que son los transitorios de WordPress, junto con cómo y cuándo usarlos. Hay mucho terreno por recorrer, ¡así que vamos directo al grano!

Tabla de contenido
1. ¿Qué son los transitorios de WordPress?
2. Los beneficios de usar transitorios en su sitio de WordPress
3. Inconvenientes del uso de transitorios en su sitio de WordPress
4. Cuándo usar los transitorios de WordPress
5. Administrar transitorios de WordPress
6. Operaciones básicas utilizadas en transitorios
6.1. 1. Configuración de transitorios
6.2. 2. Recuperación de transitorios
6.3. 3. Eliminación de transitorios
7. Caducidad transitoria: ¿cómo funciona?
8. Comprender la API de transitorios de WordPress
8.1. Las dos implementaciones más comunes del backend de la API de transitorios:
9. Aplicar transitorios en su desarrollo
10. Haz más con tu sitio de WordPress

¿Qué son los transitorios de WordPress?

Para comprender los transitorios, es útil tener algunos conocimientos básicos sobre el almacenamiento en caché y las interfaces de programación de aplicaciones (API).

El almacenamiento en caché de los datos de la página web es esencialmente una forma de guardar temporalmente los datos de un sitio web para que, si hay varias solicitudes de los mismos datos, el sitio no tenga que volver a ejecutar MySQL o PHP. Esto puede ahorrar segundos de tiempo y reducir la carga del servidor.

La idea es mantener los datos temporalmente, de ahí la palabra "transitorios". La API de transitorios es similar a la API de opciones de WordPress. Le da a los datos un nombre y un valor, que puede ser complejo, como una matriz PHP de varios niveles, y almacena los datos. Más tarde, quizás incluso en una solicitud diferente, puede recuperar esos datos usando su nombre. La diferencia es que los datos de la tabla Opciones se mantendrán para siempre. Es decir, puedes almacenar datos y, tres años después, seguirán ahí.

Cada transitorio se compone de tres partes:

  • $ transitorio. Esta es la cadena utilizada para identificar su transitorio y llamarlo. También se conoce como la 'clave' o el 'nombre' del transitorio.
  • $valor. Esta es la información que se recupera a través de una API. El valor de un transitorio puede ser un objeto, una matriz, un número o una cadena.
  • $caducidad. Este es el tiempo que un transitorio permanece en su base de datos, antes de que se elimine y tenga que acceder a la información que necesita a través de la API nuevamente.

En la superficie, eso es todo lo que hay para los transitorios de WordPress. Sin embargo, para usarlos correctamente, hay más que necesita saber.

Sin embargo, los datos transitorios no se mantendrán. ¡Ese es el punto! Puede solicitar los datos y descubrir que faltan de una de dos maneras. Primero, cuando almacena los datos, especifica una fecha de vencimiento. Por ejemplo, podrías decir "almacena esto durante tres horas". Entonces, si lo solicita después de cuatro horas, se perderá.

La segunda forma es que se permite que los datos simplemente desaparezcan, en cualquier momento, por cualquier motivo. ¡Eso suena raro, lo sé! ¿De qué sirve almacenar los datos si no se puede contar con ellos? El punto es que el almacenamiento es una solicitud que WordPress intentará cumplir, pero debido a esta flexibilidad, es posible usar diferentes tipos de implementaciones para el almacenamiento transitorio, y eso significa que es posible usar tecnología diferente y avanzada para hacer que los transitorios sean extremadamente eficientes. y funcione correctamente incluso en un entorno agrupado de varios servidores.

Debido a esta cosa de "desaparecer en cualquier momento", generalmente usa transitorios para un caché. Es decir, si necesita calcular algo que lleva tiempo real, como una consulta lenta de MySQL, o recuperar datos de una fuente externa como el Twitter o RSS de alguien, puede almacenar los datos calculados en un transitorio, sabiendo que si se pierde siempre es posible recrearlo. Pero en el caso habitual, cuando NO se pierde, tiene los datos rápidamente sin tener que volver a calcular.

Los beneficios de usar transitorios en su sitio de WordPress

Como mencionamos anteriormente, el principal beneficio de los transitorios es que mejoran el rendimiento del sitio web. Aquí hay un resumen aproximado de cómo funciona, usando el complemento Google Site Kit como ejemplo.

Cuando el complemento está activado, utiliza una API para mostrar datos de plataformas como Analytics y Search Console en el panel de control de WordPress. Sin transitorios, WordPress tendría que recuperar esta información de cada herramienta cada vez que vea el panel de su Site Kit:

En su lugar, Site Kit incluye transitorios que almacenan en caché datos de Analytics y Search Console. Se almacenan durante un día (o una hora si la plataforma no devuelve datos).

Cada vez que acceda a su panel de Site Kit, WordPress puede recuperar rápidamente la información almacenada de su base de datos en lugar de tener que volver a llamar a la API. Cuando se agota el período de caducidad, los datos antiguos se eliminan.

Esto significa que no tiene que esperar a que sus resultados se carguen cada vez. Esto es útil en una variedad de situaciones, como mostrar los recuentos compartidos en las redes sociales para sus publicaciones o mostrar un suministro de noticias.

Inconvenientes del uso de transitorios en su sitio de WordPress

Lo que te mete en problemas con los transitorios son los comportamientos diferentes y difíciles de reproducir que obtienes cuando tu complemento/tema se ejecuta bajo diferentes implementaciones de transitorios. Diferentes implementaciones transitorias significan que SÓLO tendrá problemas en ciertas configuraciones con ciertos tipos de sitios, y nunca en otros. Como desarrollador, si no es consciente de este escollo y no está codificando en consecuencia, pensará que su código es sólido, pero de hecho se romperá en el campo y ni siquiera sabrá cómo reproducirlo. !

Cuándo usar transitorios de WordPress

Los transitorios se eliminan de su base de datos una vez que llegan al final de su período de vencimiento. Por esa razón, solo desea utilizarlos para la información que se recrea continuamente.

Además, aunque pueden mejorar el rendimiento de su proyecto, es mejor reservar los transitorios para consultas grandes y llamadas remotas. Si se requiere más código para crear un transitorio que simplemente hacer una nueva solicitud del recurso cada vez que se necesita, es mejor que no lo haga.

Gestión de transitorios de WordPress

Si desea ver y administrar fácilmente los transitorios que están trabajando actualmente en su sitio de WordPress, puede instalar el complemento Administrador de transitorios:

Proporciona una lista completa de transitorios, que puede encontrar navegando a Herramientas > Transitorios :

Aquí puede ver los tres elementos transitorios que enumeramos anteriormente: la clave (nombre), el valor y el período de vencimiento. Puede editar cualquiera de estas características haciendo clic en el enlace Editar :

También puede eliminar transitorios de forma individual o masiva.

Operaciones básicas utilizadas en transitorios

Cuando se trata de codificar sus propios transitorios, hay tres operaciones básicas que probablemente necesitará usar. Hemos resumido cada uno de ellos a continuación, continuando usando Site Kit como ejemplo.

1. Configuración de transitorios

Crear o "establecer" transitorios es el proceso de definir la clave, el valor y el período de vencimiento, y aplicar esa información a los datos relevantes. Para ello, utilizará el siguiente formato:

 Set_transient ('key', $value, expiration_period)

Este es el código utilizado en Google Site Kit para configurar el transitorio que almacena datos analíticos:

 // Cache "data found" status for one day, "no data" status for one hour. set_transient( $transient_key, (int) $has_data, $has_data ? DAY_IN_SECONDS : HOUR_IN_SECONDS ); } return (bool) $has_data; } }

La clave transitoria es googlesitekit_analytics_has_data (definida anteriormente en el código), el valor es $has_data o $has_data ? , y el período de caducidad es de un día o una hora (según el valor).

2. Recuperación de transitorios

Recuperar transitorios es un poco más complicado. Primero, debe usar una función para solicitar los datos necesarios. Luego, verificará si tiene un transitorio correspondiente que deba cargarse, en lugar de realizar una nueva solicitud de API.

El resultado podría ser algo como esto:

 function some_function(){ $transient = get_transient('key');

Luego deberá devolver el transitorio o eliminar los datos caducados y realizar una nueva llamada a la fuente. Finalmente, debe configurar el transitorio después de haber devuelto los nuevos datos, por lo que se almacenará nuevamente hasta que se agote el período de vencimiento.

En Google Site Kit, se ve así:

 /** * Checks whether Analytics data exists for the given URL. * * @since 1.4.0 * * @param string $url The url to check data for. * @return bool */ protected function has_data_for_url( $url ) { if ( ! $url ) { return false; } $transient_key = 'googlesitekit_analytics_has_data_' . md5( $url ); $has_data = get_transient( $transient_key ); if ( false === $has_data ) { /* @var Google_Service_AnalyticsReporting_Report[]|WP_Error $reports Array of reporting report instances. */ $reports = $this->get_data( 'report', array( 'url' => $url, 'metrics' => array( array( 'expression' => 'ga:users' ), array( 'expression' => 'ga:sessions' ), ), ) ); if ( is_wp_error( $reports ) ) { $reports = array(); // Bypass data check and cache. } foreach ( $reports as $report ) { /* @var Google_Service_AnalyticsReporting_Report $report Report instance. */ $report_data = $report->getData(); /* @var Google_Service_AnalyticsReporting_ReportData $report_data Report data instance. */ foreach ( $report_data->getTotals() as $date_range_values ) { /* @var Google_Service_AnalyticsReporting_DateRangeValues $date_range_values Values instance. */ if ( isset( $date_range_values[0], $date_range_values[1] ) && ( 0 < $date_range_values[0] || 0 < $date_range_values[1] ) ) { $has_data = true; break 2; } } }

Este código debe ir seguido del fragmento que incluimos en la sección anterior para configurar los transitorios.

3. Eliminación de transitorios

En algunos casos, es posible que desee eliminar un transitorio. Por ejemplo, si desea ver siempre los análisis más actualizados en Google Site Kit, sería mejor no almacenar datos en caché (aunque no recomendamos que elimine los transitorios de Site Kit).

De lo contrario, el complemento mostrará los mismos resultados a lo largo del día, incluso si ha tenido nuevos visitantes. Dado que el transitorio dura 24 horas, los datos que vea por la tarde serán simplemente una versión en caché de los datos que cargó por la mañana.

La forma más sencilla de eliminar transitorios es mediante el complemento Administrador de transitorios. Sin embargo, si desea utilizar código en su lugar, puede utilizar la función delete_transient() . Todo lo que necesitas es la clave transitoria:

 delete_transient('key');

Sin embargo, deberá repetir esto para cada transitorio que desee eliminar.

Caducidad transitoria: ¿cómo funciona?

Los períodos de vencimiento transitorios se pueden expresar de diferentes maneras. Las dos opciones más simples son:

  • En segundos ( set_transient('clave', $valor, 86400))
  • Uso de las constantes de tiempo de WordPress ( set_transient('key', $value, DAY_IN_SECONDS))

Alternativamente, también puede establecer transitorios que nunca caduquen. Esto puede ser útil en situaciones en las que desea mantener los mismos datos transitorios, hasta que elimine y restablezca manualmente la información almacenada en caché.

La creación de transitorios que nunca caducan es bastante simple. Simplemente deje el parámetro de caducidad en la función set_transient en blanco o identifíquelo como cero.

Comprender la API de transitorios de WordPress

La API de transitorios de WordPress es simplemente el medio por el cual la información se almacena en caché en la base de datos de su sitio. Habilita todas las operaciones relacionadas que hemos discutido a lo largo de esta publicación, incluida la configuración, obtención y eliminación de transitorios.

En otras palabras, la API de transitorios es solo la parte del núcleo de WordPress que le permite usar transitorios.

Las dos implementaciones más comunes del backend de la API de transitorios:

  1. El integrado en WordPress y, por lo tanto, el más común con diferencia. Los valores transitorios se almacenan en la tabla wp_options al igual que las opciones normales. Con los transitorios, se almacena una opción adicional para mantener la fecha de vencimiento. Cuando se accede a un transitorio, WordPress extrae primero la fecha de caducidad. Si ha caducado, WordPress elimina ambas opciones de la tabla, "limpiando" los datos y finge que los datos nunca estuvieron allí. Si no ha caducado, toma el contenido de la tabla de opciones.
  2. Memcaché. Memcached es un software del lado del servidor muy simple pero eficiente y confiable diseñado para hacer exactamente lo que se supone que debe hacer la API de transitorios: almacenar datos basados ​​en una clave, que caduca en un momento dado y que puede desaparecer en cualquier momento si es necesario. a.

El uso de Memcached en lugar de WordPress Transients tiene dos beneficios especiales, por lo que lo preconfiguramos automáticamente aquí en WP Engine. Te cubrimos

i. Memcached es 10x-100x más rápido para almacenar y recuperar valores que WordPress Transients, lo cual es especialmente interesante ya que el objetivo de los transitorios es almacenar datos en caché para aumentar la velocidad de un sitio.

ii. Memcached establece la cantidad máxima de espacio que ocupará con los datos (por ejemplo, 64 MB de RAM), lo que significa que si un sitio almacena demasiados datos a la vez, eliminará automáticamente los datos antiguos y, por lo tanto, nunca se quedará sin espacio. Pero los transitorios de WordPress incorporados almacenarán una cantidad arbitraria de datos en la tabla de opciones.

Aplicar transitorios en su desarrollo

Suponga que está leyendo y escribiendo la misma clave de transitorios repetidamente, y suponga que son 1k de datos. En ese caso, tanto Memcached como WordPress Transients harán exactamente lo que usted espera que hagan, y ambos ocuparán alrededor de 1k de espacio (ya sea en la tabla de opciones o en Memcached).

Ahora suponga que está leyendo y escribiendo diferentes claves de transitorios, diferentes para cada sesión del navegador. En resumen, ¿qué pasa si está almacenando datos de sesión de usuario en Transitorios? Esto tiene sentido en la superficie. Los datos de la sesión no deberían durar para siempre, y no querrá molestarse con tablas de bases de datos especiales. Además de eso, muchas empresas de alojamiento de WordPress no permiten sesiones de PHP, por lo que esta es realmente la mejor opción. Incluso es rápido y multiservidor.

Aquí es donde aparecen las diferencias. Con Memcached y con un sitio con poco tráfico, este método parece funcionar. Los valores duran un tiempo y luego se eliminan cuando caducan. Sin embargo, si el servidor está muy cargado, la cantidad de datos de sesión que el servidor necesita almacenar excederá el espacio disponible en Memcached y, por lo tanto, comenzará a perder datos de sesión antes de lo que pensaba. Y si no hiciera la prueba en este entorno exacto y muy cargado, nunca lo sabría. En general, estos entornos terminan llenando memcached tan rápido que efectivamente memcached se desactiva porque nunca puede retener datos el tiempo suficiente para ser útil. ¡Efectivamente, no tiene un caché de API transitorio en absoluto!

Pero con WordPress Transients, obtienes un comportamiento diferente pero aún muy indeseable. Debido a que los valores se escriben en la base de datos, no en un bloque de RAM de tamaño fijo, todos se mantienen. Lo que significa que incluso con el sitio muy cargado, aún tiene los datos de su sesión. ¡Impresionante!

O eso pensabas. Porque lo que no se dice en la API transitoria es lo que sucede cuando usa claves únicas como sesiones. ¡Y lo que sucede con el método incorporado es que la tabla de opciones se llena indefinidamente! Porque: la "limpieza de datos antiguos" de WordPress solo funciona cuando solicita la clave (como cubrimos anteriormente). Si dejas la clave, se queda en la tabla de opciones, para siempre. ¡No hay un proceso separado que los limpie!

No solo somos conscientes de este problema, sino que queremos ayudar a nuestros clientes que podrían estar ejecutando un código que no entiende esto. ¡Ahí es donde entra en juego lo "administrado" en Managed WordPress! Todas las noches, tenemos un proceso automatizado para revisar su tabla de opciones en busca de transitorios vencidos y eliminarlos (tanto los datos como el elemento de la fecha de vencimiento). ¡Auge! Se han ido, y no tienes que preocuparte por ellos.

Así que es increíble que hagamos esto, pero como desarrollador de un complemento o tema general que se supone que funciona correctamente en cualquier entorno de alojamiento, no puede hacer esto en todos los entornos potenciales en los que se podría implementar su complemento o tema, y ​​usted quiere asegurarse de que proporciona a sus usuarios y clientes el código más optimizado posible.

Sin embargo, ahora que sabe cómo los transitorios pueden salir mal, podría ser una idea increíble echar un vistazo y ver cómo puede hacer que su código sea más eficiente. Lo más probable es que, si ha leído hasta aquí, le guste optimizar su código, y esta publicación de blog puede arrojarle el guante y motivarlo a reescribir algunas cosas para que sea más escalable.

Haga más con su sitio de WordPress

Como desarrollador de WordPress, es clave proporcionar a sus usuarios finales acceso a datos remotos mientras se mantiene un rendimiento rápido. Los transitorios de WordPress pueden ayudarlo a lograr precisamente eso.

Sin embargo, no está de más obtener un poco de ayuda adicional del alojamiento de WordPress ultrarrápido y los recursos para desarrolladores profesionales. Ya sea que sea nuevo en la codificación o un profesional experimentado, estamos listos para ayudarlo. ¡Consulta nuestros planes hoy!