💨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