Hoy, te mostraré el componente Symfony Cache, una forma fácil de agregar almacenamiento en caché a tus aplicaciones PHP. Esto ayuda a mejorar el rendimiento general de su aplicación al reducir el tiempo de carga de la página..
El componente Symfony Cache te permite configurar el almacenamiento en caché en tus aplicaciones PHP. El componente en sí es muy fácil de instalar y configurar y le permite comenzar rápidamente. Además, proporciona una variedad de adaptadores para elegir, como se muestra en la siguiente lista:
Cuando se trata de almacenar en caché utilizando el componente de caché de Symfony, hay algunos términos con los que deberías familiarizarte..
Para empezar, la elemento de caché se refiere al contenido que se almacena. Cada elemento se almacena como un par clave-valor. Los elementos de caché son gestionados por el grupo de caché, que los agrupan lógicamente. De hecho, debe utilizar el grupo de caché para manipular los valores de caché. Finalmente, es el adaptador de caché que hace todo el trabajo pesado para almacenar artículos en el back-end de caché.
En este artículo, exploraremos cómo puedes liberar el poder del componente de caché de Symfony. Como de costumbre, comenzaremos con la instalación y la configuración, y luego continuaremos con la exploración de algunos ejemplos del mundo real en la última parte del artículo..
En esta sección, vamos a instalar el componente Cache. Supongo que ya ha instalado Composer en su sistema; lo necesitará para instalar el componente Cache disponible en Packagist.
Una vez que haya instalado Composer, continúe e instale el componente Cache usando el siguiente comando.
$ compositor requiere symfony / caché
Eso debería haber creado un compositor.json archivo que debería verse así:
"require": "symfony / cache": "^ 4.1"
Eso es todo para la instalación, pero ¿cómo se supone que lo agregue a su aplicación? Es solo una cuestión de incluir el autoload.php archivo creado por Composer en su aplicación, como se muestra en el siguiente fragmento de código.
En esta sección, veremos un ejemplo que muestra cómo podría usar el componente Caché en sus aplicaciones para almacenar el contenido en caché..
Para empezar, vamos a seguir adelante y crear el index.php archivo con los siguientes contenidos.
getItem ('demo_string'); if (! $ demoString-> isHit ()) $ demoString-> set ('Hello World!'); $ cachePool-> save ($ demoString); if ($ cachePool-> hasItem ('demo_string')) $ demoString = $ cachePool-> getItem ('demo_string'); echo $ demoString-> get (); echo "\ n"; // eliminar todos los elementos $ cachePool-> clear (); if (! $ cachePool-> hasItem ('demo_string')) echo "La entrada de caché demo_string fue eliminada exitosamente! \ n"; // 2. almacenar valores de matriz $ demoOne = $ cachePool-> getItem ('demo_array'); if (! $ demoOne-> isHit ()) $ demoOne-> set (array ("one", "two", "three")); $ cachePool-> save ($ demoOne); if ($ cachePool-> hasItem ('demo_array')) $ demoOne = $ cachePool-> getItem ('demo_array'); var_dump ($ demoOne-> get ()); echo "\ n"; // eliminar el elemento específico $ cachePool-> deleteItem ('demo_array'); if (! $ cachePool-> hasItem ('demo_array')) echo "La entrada de caché demo_array se eliminó con éxito! \ n"; // 3. establecer vencimiento en los elementos $ foo = $ cachePool-> getItem ('foo'); if (! $ foo-> isHit ()) $ foo-> set ('bar'); $ foo-> expiresAfter (30); $ cachePool-> guardar ($ foo); if ($ cachePool-> hasItem ('foo')) $ foo = $ cachePool-> getItem ('foo'); echo $ foo-> get (); echo "\ n"; dormir (60); if ($ cachePool-> hasItem ('foo')) $ foo = $ cachePool-> getItem ('foo'); echo $ foo-> get (); echo "\ n"; else echo "El ítem del caché expiró! \ n";
Vayamos a través de las partes principales de la index.php archivo para entender su propósito.
Como mencionamos anteriormente, los elementos en caché se almacenan en un grupo de caché. Además, cada grupo de caché está respaldado por un back-end y un adaptador de caché específicos. Si desea almacenar elementos en el caché del sistema de archivos, por ejemplo, necesita inicializar el grupo de caché del adaptador del sistema de archivos.
$ cachePool = new FilesystemAdapter (", 0," cache ");
Puede proporcionar tres argumentos opcionales a la FilesystemAdapter
objeto:
Como ya hemos creado el grupo de caché, podemos usarlo para almacenar elementos de caché..
En primer lugar, utilizamos el obtiene el objeto
método para recuperar el elemento de caché con el Demo_string
llave. A continuación, utilizamos el isHit
método para verificar si el valor que estamos buscando ya está presente en el elemento de caché $ demoString
.
$ demoString = $ cachePool-> getItem ('demo_string'); if (! $ demoString-> isHit ()) $ demoString-> set ('Hello World!'); $ cachePool-> save ($ demoString);
Ya que esta es la primera vez que vamos a buscar el Demo_string
elemento de caché, el isHit
el método debería volver falso
. A continuación, utilizamos el conjunto
método de la $ demoString
objeto para establecer el valor de caché. Finalmente, salvamos el $ demoString
elemento de caché en el $ cachePool
agrupación de caché utilizando el salvar
método.
Ahora que hemos almacenado el elemento en el caché, veamos cómo recuperarlo del caché..
if ($ cachePool-> hasItem ('demo_string')) $ demoString = $ cachePool-> getItem ('demo_string'); echo $ demoString-> get (); echo "\ n";
Aquí, usamos el hasItem
Método para verificar la existencia del elemento de caché en el grupo de caché antes de recuperarlo.
A continuación, veamos cómo eliminar todos los elementos de caché de la agrupación de caché:
$ cachePool-> clear ();
En la sección anterior, discutimos cómo almacenar valores básicos en el grupo de caché. El almacenamiento de valores de matriz es muy similar, como puede ver en el siguiente ejemplo.
$ demoOne = $ cachePool-> getItem ('demo_array'); if (! $ demoOne-> isHit ()) $ demoOne-> set (array ("one", "two", "three")); $ cachePool-> save ($ demoOne); if ($ cachePool-> hasItem ('demo_array')) $ demoOne = $ cachePool-> getItem ('demo_array'); var_dump ($ demoOne-> get ()); echo "\ n";
Como puede ver, simplemente podemos establecer el elemento de caché con un valor de matriz, igual que hicimos para una cadena.
A continuación, veamos cómo eliminar el elemento de caché específico de la agrupación de caché.
$ cachePool-> deleteItem ('demo_array');
Aquí, usamos el Eliminar elemento
método para eliminar el demo_array
elemento de la agrupación de caché.
Hasta ahora, hemos almacenado en caché los elementos en el grupo sin fecha de caducidad. Sin embargo, normalmente no desea almacenar elementos en el caché de forma permanente. Por ejemplo, es posible que desee actualizar los elementos de la memoria caché periódicamente, por lo que necesita un mecanismo que elimine los elementos de la memoria caché caducados..
En esta sección, analizaremos cómo almacenar elementos en el caché junto con una fecha de caducidad.
$ foo = $ cachePool-> getItem ('foo'); if (! $ foo-> isHit ()) $ foo-> set ('bar'); $ foo-> expiresAfter (30); $ cachePool-> guardar ($ foo);
Como puede ver en el fragmento anterior, puede utilizar el expira después de
Método para establecer una fecha de caducidad para el elemento en caché. Puede pasar la cantidad de segundos que le gustaría almacenar en caché un elemento en el primer argumento del expira después de
método.
En nuestro ejemplo, usamos el dormir
método para probar si el elemento en caché todavía está disponible en el grupo de caché.
if ($ cachePool-> hasItem ('foo')) $ foo = $ cachePool-> getItem ('foo'); echo $ foo-> get (); echo "\ n"; dormir (60); if ($ cachePool-> hasItem ('foo')) $ foo = $ cachePool-> getItem ('foo'); echo $ foo-> get (); echo "\ n"; else echo "El ítem del caché expiró! \ n";
Sigue adelante y pruébalo para ver cómo funciona.!
Hoy, echamos un breve vistazo al componente Symfony Cache, que te permite configurar el almacenamiento en caché en tus aplicaciones PHP. También admite una variedad de adaptadores de almacenamiento en caché que, en conjunto, le brindan la flexibilidad de elegir el tipo de back-end que desea usar.
Siéntase libre de expresar sus pensamientos y consultas utilizando el formulario a continuación.