Las cookies nos permiten ofrecer nuestros servicios. Al utilizar nuestros servicios, aceptas el uso que hacemos de las cookies. Más Información. Aceptar

Symfony 3.2 mejora su caché

Daniel Ortego Delgado
  • Escrito por Daniel Ortego Delgado el 10 de Noviembre de 2016
  • 2 min de lectura | Backend
Symfony 3.2 mejora su caché

La nueva versión de Symfony, la 3.2, que saliera a la luz el pasado mes de septiembre y que se ha hecho oficial hace escasos días, trae consigo una serie de mejoras en la caché que proporcionarán a los desarrolladores de este framework de PHP una mayor usabilidad, sobre todo en el área de tests.

Añade un nuevo adaptador “Null”

El nuevo Symfony\Component\Cache\Adapter\NullAdapter es un adaptador caché especial que deshabilita la caché (pierde todos los elementos guardados en ella y devuelve false para todas las operaciones de lectura y almacenamiento. Este adaptador es muy útil para los tests.

Añade un adaptador de sistema de archivos más rápido

El novedoso Symfony\Component\Cache\Adapter\PhpFilesAdapter es muy similar al ya existente FilesystemAdapter pero tiene un mejor rendimiento cuando se utiliza OPcache en el servidor. La clave está en que cuando se guardan los elementos, el nuevo adaptador crea un archivo PHP que se incluye en las operaciones fetch() . Esto permite a la OPcache almacenar esos archivos en su memoria. En resumen, PhpFilesAdapter es 3.5 veces más rápido que FilesystemAdapter para las operaciones de lectura, pero un poco más lento para las de escritura.

Añade un nuevo adaptador PDO y Doctrine DBAL

El nuevo Symfony\Component\Cache\Adapter\PdoAdapter permite el uso de cualquier DBAL, siempre que sea una base de datos compatible con el almacenamiento de su caché. Su implementación requiere mucho de PdoSessionHandler . Por ejemplo, para crear una caché basada en SQLite, hay que ejecutar lo siguiente:


use Symfony\Component\Cache\Adapter\PdoAdapter;
$dbFilePath = tempnam(sys_get_temp_dir(), 'sf_sqlite_cache');
$pool = new PdoAdapter('sqlite:'.$dbFilePath);
$pool->createTable();

Añade un adaptador genérico compatible con las etiquetas

La invalidación basada en etiquetas es uno de los mecanismos proporcionados por Symfony para invalidar las cachés, que es el proceso de eliminar todos los elementos almacenados en caché relacionados con un cambio en el estado de su modelo. En Symfony 3.2, una nueva clase Symfony\Component\Cache\Adapter\TagAwareAdapter y una interfaz Symfony\Component\Cache\Adapter\TagAwareAdapterInterface permiten transformar cualquier adaptador de caché en un adaptador de etiqueta.

El constructor de la clase TagAwareAdapter acepta dos argumentos. El primero es el adaptador de caché utilizado para almacenar los elementos y el segundo argumento opcional es el adaptador utilizado para almacenar en caché las etiquetas. Esto permite, por ejemplo, utilizar un sistema de archivos o caché de base de datos para almacenar elementos grandes y utilizar una caché Redis para que las etiquetas tengan comprobaciones de invalidación ultra rápidas:


use Symfony\Component\Cache\Adapter\TagAwareAdapter;
use Symfony\Component\Cache\Adapter\FilesystemAdapter;
use Symfony\Component\Cache\Adapter\RedisAdapter;
new FilesystemAdapter(),
$cache = new TagAwareAdapter( new RedisAdapter('redis://localhost')
);

Añade un comando para borrar las agrupaciones de caché

El FrameworkBundle incluye además un comando cache:pool:clear que toma como argumento uno o más nombres de servicio. Estos servicios son los conjuntos de caché para borrar o los servicios de limpieza de caché para invocar:


./bin/console cache:pool:clear app.cache app.cache.products

Hasta marzo del próximo año no se espera que conozcamos la versión 3.3, y no se hará oficial hasta mayo de 2017. Mientras tanto, podremos trabajar con las mejoras de la versión 3.2 y anteriores.

Estas son algunas de las empresas que ya confían en OpenWebinars

Profesores y profesionales

Nuestros docentes son profesionales que trabajan día a día en la materia que imparten

Conviértete en profesor de OpenWebinars