Cómo Optimizar el Rendimiento de tu Sitio Web Laravel
Tener un sitio web optimizado es fundamental para brindar una buena experiencia de usuario. Y si usas el popular framework PHP Laravel, hay varias configuraciones y buenas prácticas que debes implementar para que tu sitio sea realmente veloz.
En este artículo te enseñaré paso a paso cómo optimizar la velocidad y rendimiento de tu sitio o aplicación Laravel, para que tus visitantes no abandonen y conviertan más.
Índice
Configuraciones Iniciales para un Sitio Veloz
Lo primero que debes hacer al crear un sitio Laravel es asegurarte de tener una buena configuración inicial, empezando por el hosting.
Elegir un Buen Hosting Optimizado para Laravel
No uses un hosting compartido genérico. Elige un plan optimizado para Laravel, con PHP 7+ y MySQL o PostgreSQL. Recomendados como Forge, Laravel Vapor o algún VPS administrado.
Así tendrás el entorno indicado para un óptimo rendimiento. Ojo que hosting baratos suelen sobrecargar los recursos.
Habilitar Opcache para Mejor Performance
Opcache almacena en caché el bytecode PHP ya compilado para no tener que volver a analizar el código fuente cada petición. Esto mejora mucho el rendimiento.
opcache.enable=1
También incrementa la memoria que usa Opcache:
opcache.memory_consumption=256
Configurar Caché para Contenido Estático
Habilita caché de contenido estático en el archivo .htaccess
:
<FilesMatch \\.(jpg|jpeg|png|gif|js|css|svg)$>
Header set Cache-Control "max-age=864000, public"
</FilesMatch>
Esto almacenará en caché archivos estáticos por 10 días, reduciendo solicitudes al servidor.
Optimizaciones de Laravel para Velocidad
Ahora que tu hosting y configuración inicial están listos, vamos a optimizaciones específicas de Laravel para mejorar velocidad.
Usar Paginación para Consultas Grandes
Si tienes que mostrar muchos registros de base de datos, úsalos paginados con Laravel Pagination en vez de cargar todos a la vez. Esto reduce solicitudes grandes. Ejemplo paginando posts:
$posts = Post::paginate(15);
Habilitar Compresión GZIP
Comprimir contenido con GZIP reduce el tamaño de transferencia sobre HTTP. Esto se puede habilitar globalmente en Laravel:
// AppServiceProvider
public function boot()
{
$this->app['router']->middleware([
//other middleware
\\Illuminate\\Compression\\Middleware\\CompressResponse::class
]);
}
Minificar CSS, JS y HTML
Para minificar y ofuscar los assets estáticos con Laravel 9 o superior, debemos usar Vite en lugar de Laravel Mix. Vite minifica y ofusca CSS, JS y HTML por default en el entorno de producción.
Simplemente debemos configurar Vite en vite.config.js
:
import { defineConfig } from 'vite';
import laravel from 'laravel-vite-plugin';
export default defineConfig({
plugins: [
laravel({
input: ['resources/css/app.css', 'resources/js/app.js'],
refresh: true,
}),
],
});
Luego en package.json
indicamos que se compile para producción:
"scripts": {
"dev": "vite",
"build": "vite build"
}
Con eso Vite se encargará de minificar y ofuscar todo para optimizar el tamaño en producción.
Usar Carga Diferida (Lazy Load)
Lazy load difiere la carga de imágenes u otros assets que no se muestran inicialmente. Esto acelera la carga perceptible. Viene predefinido en HTML5 con el atributo loading = "lazy"
<img loading="lazy" src="image.jpg" alt="..." />
<iframe loading="lazy" src="video-player.html" title="..."></iframe>
Escalabilidad Horizontal con Redis
Redis es una base de datos en memoria muy rápida. La podemos usar en Laravel para escalar y cachear.
Cache con Redis
Puedes configurar Laravel para usar Redis de caché:
// config/cache.php
'default' => env('CACHE_DRIVER', 'redis'),
'redis' => [
'driver' => 'redis',
'connection' => 'cache',
],
Redis nos prmite lo siguiente:
- Colas con Redis
Procesos en background como emails y notificaciones pueden usar Redis en vez de bases de datos para mayor velocidad.
- Sessiones con Redis
También puedes mover el almacenamiento de sesión a Redis evitando sobrecargar la base de datos.
Monitoreo del Rendimiento
Es clave monitorear métricas para identificar y optimizar cuellos de botella.
- Debuggear Lentitud con Debugbar
Instala Debugbar en Laravel para inspeccionar tiempos de carga y consultas lentas. Puedes ver aquí el repositorio y un tutorial para implementarlo
- Monitorear Métricas con Telescope
Telescope es el logger avanzado de Laravel para monitorear request, queries, eventos y más. Revisa aquí la instalación y uso de Laravel Telescope
Conclusión
Optimizar el rendimiento en Laravel requiere buenas configuraciones iniciales, técnicas específicas del framework y monitoreo constante.
Con estas recomendaciones lograrás un sitio mucho más rápido y escalable, mejorando la experiencia de tus usuarios.
Preguntas Frecuentes
Los puntos clave son elegir un buen hosting, habilitar opcache y caché de contenido estático, usar paginación en consultas grandes, compresión GZIP, minificación de assets, caché de rutas y monitorización del rendimiento.
Además de estas optimizaciones, puedes identificar código o consultas lentas con debuggers como Debugbar o Telescope. También analiza con profilers avanzados como Blackfire. Otras opciones son escalar a un mejor servidor o CDN.
No necesariamente. Laravel ofrece muy buen rendimiento si se implementan bien estas optimizaciones. Además tiene potentes herramientas para identificar y solucionar cuellos de botella. Bien utilizado, Laravel puede ser tan rápido como cualquier otro framework.