Cuando se trata de crear aplicaciones web, una de las cosas más importantes que debemos tener en cuenta constantemente es el rendimiento..
Como dicen, el rendimiento es una característica..
Y sin importar si eres un diseñador, desarrollador o usuario, sabes que esto es verdad de manera intuitiva: cuando se trata de aplicaciones, odiamos esperar. Nos frustramos cuando las cosas no funcionan lo suficientemente rápido, o tenemos que esperar más de lo que creemos que deberíamos.
Para ello, la mayoría de los marcos de desarrollo web modernos permiten implementar algún tipo de almacenamiento en caché mediante el uso de ciertas API, y WordPress, aunque es una base, no es diferente.
Entonces, al continuar nuestra discusión sobre por qué WordPress es una opción viable para servir como base en el desarrollo de aplicaciones web, analizaremos las API que proporciona la aplicación principal, cómo funcionan y cómo podemos aprovecharlas. nuestra ventaja, y cómo el rendimiento se puede mejorar aún más mediante complementos de almacenamiento en caché adicionales.
En resumen, el almacenamiento en caché es importante porque nos permite almacenar datos que se recuperan con frecuencia en un lugar de la memoria para que puedan recuperarse rápidamente..
Cuando observa esto a una escala mayor, esto se hace cada vez más evidente cuando varios usuarios están viendo un sitio. Con eso quiero decir que si una sola persona o un número muy pequeño de personas visitan un sitio web, y el sitio tiene sus datos almacenados en una base de datos, cada vez que se carga una página, esa información se debe recuperar del sitio. Base de datos, insertada en la página, y luego devuelta al usuario..
Si se instituye un nivel de almacenamiento en caché, las llamadas a la base de datos no tendrán que hacerse con tanta frecuencia. En cambio, la información se puede extraer de un área en la memoria que permite una recuperación más rápida y, por lo tanto, tiempos de carga de página más rápidos..
Vamos a entrar en los detalles técnicos de esto un poco más adelante en el artículo.
Si ha estado usando WordPress durante un período de tiempo significativo, entonces probablemente esté familiarizado con una cantidad de complementos de almacenamiento en caché que están disponibles..
Sin duda, estas son excelentes soluciones para acelerar su sitio web y / o aplicación web, pero plantea la pregunta: si hay complementos disponibles para hacer esto, entonces ¿por qué deberíamos preocuparnos??
Es una pregunta válida, sin duda, pero los complementos solo pueden hacer mucho trabajo por su cuenta..
Los desarrolladores pueden estructurar sus aplicaciones de tal manera que no solo se desempeñen bien sin mecanismos de almacenamiento en caché, sino que también se verán mejorados en gran medida por dichos complementos de almacenamiento en caché..
Con eso, quiero decir que estos complementos de almacenamiento en caché buscan datos para ser almacenados en una ubicación determinada por temas y aplicaciones, y si podemos hacerlo mediante programación dentro del contexto de nuestro propio trabajo, entonces los complementos darán como resultado un rendimiento aún mayor..
Después de echar un vistazo a las API que tenemos disponibles, volveremos a examinar este tema para ver cómo mejoran el rendimiento de los complementos de caché más adelante en el artículo.
Para poder introducir nuestro primer nivel de almacenamiento en caché en la aplicación, necesitamos aprovechar la API de transitorios de WordPress. Primero, tenga en cuenta que la definición oficial de un transitorio es "algo que existe solo por un corto período de tiempo".
Tal como se define en el Códice:
[La API transitoria] ofrece una forma simple y estandarizada de almacenar temporalmente los datos almacenados en caché en la base de datos, dándole un nombre personalizado y un período de tiempo después del cual caducará y se eliminará.
Pero, ¿qué significa esto exactamente? Después de todo, los datos aún se almacenan en la base de datos, entonces ¿por qué es esto mejor que mantener los datos almacenados en cualquier otra tabla de la base de datos (como la wp_options
¿mesa?)?
Una vez que revisemos la discusión sobre el almacenamiento en caché y los complementos, hablaremos más sobre esto con más detalle..
Establecer un valor transitorio es realmente fácil, y es muy parecido a almacenar datos en la tabla de opciones.
Específicamente, necesita un valor clave que identifique de forma exclusiva los datos, y luego necesita un valor para asociarse con esa clave. También necesita un tiempo de caducidad (en segundos) para mantener los datos en la tabla antes de actualizarlos.
Así que digamos que queremos almacenar el nombre del usuario actual como el último o el último usuario activo en el sitio. Podemos hacer esto aprovechando el wp_get_current_user ()
función.
Primero, estableceremos el valor de esta manera:
set_transient ('most_recent_user', wp_get_current_user () -> user_login, 12 * HOUR_IN_SECONDS)
Aquí, note un par de cosas:
HOUR_IN_SECONDS
Las constantes es algo que se introdujo en WordPress 3.5. Una lista completa de las constantes están disponibles aquí..Aunque así es como vamos ajuste Transitorio, esto todavía no explica cómo podemos gestionar los transitorios si no existen o si ya existen..
Cubriremos eso un poco más adelante en el artículo..
Cuando se trata de recuperar transitorios, es muy similar a recuperar cosas como metadatos u opciones. Con eso, quiero decir que simplemente necesitamos saber la clave mediante la cual recuperar la información.
Entonces, para mantener la coherencia con el ejemplo anterior, podemos recuperar al usuario más reciente de la aplicación con la siguiente llamada:
get_transient ('most_recent_user');
Esto obviamente devolverá cualquier tipo de información que haya almacenado, o Si el transitorio ha expirado, es decir, han pasado más de 12 horas, la función devolverá el valor booleano de FALSO
.
Esto es clave para recordar, especialmente cuando intenta leer los valores de caché, y luego necesita capturarlos de otra fuente de datos en caso de que no estén disponibles en el almacén de transitorios..
Veremos un ejemplo completo de cómo hacer esto antes del final del artículo..
Por último, si necesita eliminar un transitorio para eliminarlo por completo o para eliminarlo antes de su vencimiento definido para reemplazarlo con otro valor, simplemente deberá utilizar la siguiente función:
delete_transient ('most_recent_user');
Además, esta función volverá FALSO
si la eliminación del valor transitorio no tiene éxito; de lo contrario, volverá FALSO
.
Cuando se trata de configurar los tiempos para que caduquen los valores de la memoria caché, hay varias formas que facilitan la configuración de valores en lugar de la manipulación básica de la música..
Por ejemplo, MINUTE_IN_SECONDS
es mucho más fácil de usar que 60, especialmente cuando se multiplica por, por ejemplo, minutos, horas o días.
Y a partir de WordPress 3.5, se han agregado varias constantes a la aplicación central que hacen que estos cálculos sean mucho más fáciles de leer..
A saber:
MINUTE_IN_SECONDS
HOUR_IN_SECONDS
DAY_IN_SECONDS
WEEK_IN_SECONDS
AÑO_IN_SECONDS
Mucho más fácil de usar, leer y escribir, ¿no es así??
En este punto, creo que es importante ver cómo podemos configurar los transitorios, comenzando con el almacenamiento de un valor en la tabla de opciones..
Aquí está el orden en el que haremos esto:
wp_options
mesa.Luego, en la segunda mitad del código, haremos lo siguiente:
Dicho esto, echemos un vistazo:
$ username = wp_get_current_user () -> user_name; add_option ('most_recent_user', $ nombre de usuario); // Compruebe si el valor existe en el caché if (FALSE! == get_transient ('most_recent_user')) // Si lo hace, lo eliminaremos ... if (delete_transient ('most_recent_user')) // ... y almacene el usuario más reciente durante un máximo de un minuto set_transient ('most_recent_user', MINUTE_IN_SECONDS); else // La eliminación no fue exitosa, así que registre el error // Ahora intente leer el valor del caché. if (FALSE! == ($ username = get_transient ('most_recent_user')) // Como no existe, lo leeremos de la tabla de la opción $ username = get_option ('most_recent_user'); // And luego actualizaremos el caché set_transient ('most_recent_user', $ username, MINUTE_IN_SECONDS);
Tenga en cuenta que este ejemplo no está completo; se puede refactorizar para que sea un poco más limpio, y el código debe resumirse en funciones que sean más relevantes para la aplicación, pero el propósito de este código es mostrar cómo manejar la lógica condicional, opciones , y transitorios.
Ahora, con todo lo dicho, podemos revisar la pregunta sobre cómo el uso de transitorios puede mejorar el rendimiento dentro de los complementos.
Como mencionamos anteriormente:
Después de echar un vistazo a las API que tenemos disponibles, volveremos a examinar este tema para ver cómo mejoran el rendimiento de los complementos de caché más adelante en el artículo.
Dicho esto, el almacenamiento en caché y la base de datos de WordPress tienen que ver con la ubicación de los datos en la base de datos.
Dado que los transitorios se almacenan en una ubicación separada del resto de los datos, los complementos, como un complemento basado en memcached, por ejemplo, buscarán los datos donde se almacenan los transitorios, luego cargarán los datos en la memoria desde esa ubicación.
Por lo tanto, cuando se solicitan los datos, se recuperarán de la memoria. Si los datos no existen, se recuperarán de la base de datos.
Además, si la programación se realiza correctamente, cuando los datos no se leen del caché y se recuperan de la base de datos, se insertarán nuevamente en el caché para que la próxima vez que se recupere esté disponible en la memoria..
Finalmente, la clave a tener en cuenta sobre la información transitoria es que tiene un período de caducidad. Esto significa que los datos solo se almacenarán en esta área de la base de datos durante un tiempo específico.
Para ese fin, tenemos que dar cuenta de eso. Esto significa que siempre que busquemos recuperar transitorios, debemos asegurarnos de que existan. Si no lo hacen, los sacaremos de donde son ubicado, y luego almacenarlos en la ubicación adecuada.
En este punto, hemos cubierto muchos aspectos de las características que ofrece WordPress en relación con una base para el desarrollo de aplicaciones web..
Pero tenemos un último componente importante que cubrir y así es cómo tratar las consultas personalizadas..
Claro, hay algunas API excelentes relacionadas con la ejecución de consultas diseñadas para propósitos específicos de WordPress, como WP_Query
y WP_User_Query
, pero también analizaremos algunas de las instalaciones nativas que nos permiten escribir consultas personalizadas en la base de datos utilizando objetos de WordPress definidos, así como métodos que permiten la correcta desinfección de datos..
Pero cubriremos todo eso y más de ese material en el próximo artículo.