Author : Jhon
Publicado : 15 septiembre, 2021
Los transients son opciones con fecha de caducidad. ¿Qué quiere decir esto? Se almacenan también en la tabla wp_options, pero con la diferencia de que tienen fecha de expiración. De este modo, podemos usar la tabla wp_options para hacer nuestro propio sistema de caché.
Es decir, si en nuestro sitio tenemos consultas muy complejas, podemos almacenar el resultado en un transient y acceder a él en lugar de volver a realizar la consulta cada vez que un visitante entra en la web. Cierto es que seguimos haciendo una consulta a la base de datos para obtener el transient, pero ésta vez hacemos una consulta sencilla y obtenemos el resultado, en lugar de hacer una consulta compleja cada vez.
De esta manera podemos optimizar y mejorar un poco el rendimiento de nuestra web. Es una técnica WPO de cacheo de resultados de queries complejas en base de datos. Esto mejora aún más si utilizas algún plugin de caché como W3 Total Caché.
También resulta de gran utilidad si tu sitio tiene mucho tráfico y hace llamadas a servicios externos como pueden ser Facebook, Twitter, etc…en lugar de hacer estas llamadas en cada petición, puedes almacenar estos datos en un transient, y establecer un tiempo de expiración de 15 minutos por ejemplo, así todo el tráfico que tengas durante esos 15 minutos obtendrán la información de la base de datos en lugar de hacer peticiones a servicios externos.
Cómo hemos dicho anteriormente la API de transients es muy similar a la API de opciones. En este caso tenemos disponibles funciones para establecer, obtener y eliminar datos:
/** * Guardar datos * * $transient: Identificador único de nuestro dato (45 caracteres máximo, 40 en multisite) * $value: Valor de nuestro dato * $expiration: El valor máximo en segundos que mantendremos la variable antes de refrescarla */ set_transient( $transient, $value, $expiration ); /** * Obtener datos * * $transient: Identificador único de nuestro dato. Si no se encuentra devuelve false */ get_transient( $transient ); /** * Obtener datos * * $transient: Identificador único de nuestro dato. Si no se encuentra no se realiza ninguna acción */ delete_transient( $transient );
A partir de la versión 3.5 de WordPress se introdujeron una serie de constantes para hacer más fácil el cálculo del tiempo de expiración del transient:
<?php
function facebook_count(){
$transient_data = get_transient('facebook_count');
if ( !$transient_data ) {
// Obtenemos los datos de facebook
$return = wp_remote_get( 'http://graph.facebook.com/?id=http://www.midominio.com', array( 'timeout' => 10 ) );
$json = json_decode($return["body"], true);
// Guardamos los datos en el transient
set_transient('facebook_count', $json["shares"], 15 * MINUTE_IN_SECONDS);
}
echo sprintf("Esta página ha sido compartida %s veces en facebook", get_transient('facebook_count'));
}
Deja una respuesta