Tabla de contenido:
Introducción
En las aplicaciones la velocidad es un factor fundamental para la comodidad del usuario, por lo que las consultas pesadas afectan gravemente el trabajo fluido del usuario, por lo que es necesario aplicar prácticas que permitan reducir el número de consultas a la base de datos.
Caché en Laravel
Laravel afortunadamente provee una API muy simple para backend de caché, esto permite aprovechar la recuperación de datos de una forma increíblemente rápida y mejorar el rendimiento de la aplicación web.
Los datos almacenados en caché se almacenan en un almacén de datos muy rápido como Memcached o Redis aunque puede optar por otras alternativas.
¿Cómo usar la caché para consultas de base de datos?
Imagina que necesitas mostrar un combo con un listado de ciudades que están almacenados en base de datos, por cada vez que se muestre el combo se debe consultar a la base de datos para llenar las opciones, si bien esto es un proceso rápido ¿qué pasa si la aplicación tiene muchas visitas a ese formulario?, la aplicación llegara a responder de forma lenta, por lo cual es necesario aplicar algún método para limitar la cantidad de consultas a la base de datos para obtener el listado.
Almacenar consultas en caché
Para poder interactuar con la API de caché es necesario incluir el Facade Illuminate\Support\Facades\Cache
.
Retomando el ejemplo mencionado tendríamos lo siguiente, para crear un listado de ciudades.
public function index()
{
$cities = City::query()->pluck('name', 'id');
return view('dashboard', [
'cities' => $cities,
]);
}
Si bien esto es relativamente pequeño para llegar a impactar el rendimiento de la aplicación, imagina que mil usuarios accedan a ese listado al mismo tiempo, para evitar el problema podemos almacenar esa consulta en la caché.
public function index()
{
$cities = Cache::remember('city_list', 600, function () {
return City::query()->pluck('name', 'id');
});
return view('dashboard', [
'cities' => $cities,
]);
}
El método remember
buscará el elemento city_list
, si el elemento no existe en la caché, se ejecutará el cierre pasado al método y su resultado se colocará en la caché.
Es importante tomar encuentra que la duración de la caché se establece en segundos, pasado ese tiempo la caché se elimina y se creara nuevamente cuando se invoque la consulta.
Para limpiar la caché de forma manual se utiliza el comando:
php artisan cache:clear