馃挩 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
0 Comentarios
Si desea contactar comigo, lo puede hacer atravez deste formulario gracias