馃挩Estrategias de Caching (Redis/Memcached) y Rendimiento

 

馃挩 Estrategias de Caching (Redis/Memcached) y Rendimiento

 
   

Acelerando tu aplicaci贸n a la velocidad de la luz 

   

      El **Caching** (almacenamiento en cach茅) es una t茅cnica esencial para mejorar la velocidad y reducir la carga del servidor en cualquier aplicaci贸n. Consiste en guardar el resultado de operaciones costosas (como consultas a bases de datos o renderizaci贸n de vistas complejas) en una ubicaci贸n de acceso r谩pido. Laravel facilita el uso de varios "drivers" de cach茅, siendo **Redis** y **Memcached** los m谩s utilizados en producci贸n por su velocidad en memoria.    

 
    
   

⚙️ Configuraci贸n del Driver de Cach茅

   

      Laravel configura el driver de cach茅 en el archivo **`config/cache.php`**, pero la opci贸n activa se define en el archivo `.env`. Para usar Redis o Memcached, debes tenerlos instalados y configurados en tu servidor.    

   
     
        Configuraci贸n en .env (ejemplo con Redis)              
     
CACHE_DRIVER=redis
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379
   
 
 
   

馃摑 Caching de Resultados de Consultas

   

      Es la forma m谩s com煤n de usar el cach茅: almacenar los datos recuperados de Eloquent para evitar golpear la base de datos repetidamente. El m茅todo **`remember()`** es el m谩s 煤til para esto.    

   

Ejemplo: Listado de productos destacados

   

      Aqu铆 guardaremos el listado por 60 minutos (3600 segundos). Si el cach茅 expira, se ejecuta la consulta.    

   
     
        Usando Cache::remember()              
     
use Illuminate\Support\Facades\Cache;
use App\Models\Producto;

// La clave 'productos.destacados' identifica el dato en el cach茅.
$destacados = Cache::remember('productos.destacados', 3600, function () {
    // Esta closure S脫LO se ejecuta si el cach茅 no existe o ha expirado.
    return Producto::where('es_destacado', true)
                     ->take(10)
                     ->get();
});

return view('home', compact('destacados'));
   
 
 
   

馃棏️ Invalidaci贸n de Cach茅 (Cache Busting)

   

      Si actualizas un producto destacado, debes **invalidar** (o borrar) el cach茅 para que se sirvan los datos frescos. De lo contrario, los usuarios ver谩n datos viejos hasta que expire el tiempo (`3600` segundos del ejemplo anterior).    

   

Ejemplo: Borrar el cach茅 despu茅s de actualizar

   
     
        Invalidando el cach茅 con Cache::forget()              
     
use Illuminate\Support\Facades\Cache;

public function actualizarDestacado(Producto $producto)
{
    // L贸gica para actualizar el producto...
    $producto->update(['es_destacado' => request('destacado')]);

    // Borramos el cach茅 inmediatamente
    Cache::forget('productos.destacados');

    return redirect()->back()->with('status', 'Producto actualizado.');
}
   
 
    
   

⚡️ Opciones Adicionales de Rendimiento

   

      Adem谩s del cach茅 de datos, Laravel te permite cachear configuraciones cr铆ticas que aceleran la fase de "bootstrap" de la aplicaci贸n:    

   
         
  • **Cache de Rutas y Configuraci贸n:** Ya lo vimos en el despliegue, pero es clave:        
    php artisan config:cache
    php artisan route:cache
         
  •      
  • **Cache de Eventos y Vistas:** Para producci贸n, compilar las vistas y descubrir los eventos/listeners reduce el overhead:        
    php artisan view:cache
    php artisan event:cache
         
  •    
 
 

Publicar un comentario

0 Comentarios