¿Estás buscando formas exitosas de acelerar el rendimiento de Laravel mientras trabajas en tu proyecto? ¡Has llegado al lugar adecuado!
Laravel es un popular framework PHP de código abierto que es conocido por su robusta seguridad y su sencilla pero sofisticada arquitectura de codificación. Es una gran opción para construir aplicaciones web de vanguardia capaces de impulsar los ingresos y hacer avanzar a las empresas.
Sin embargo, el rendimiento de Laravel puede volverse lento si no utilizas las técnicas de optimización adecuadas.
Por suerte, existen numerosos trucos para maximizar el rendimiento de Laravel. Hemos reunido una lista de los consejos de optimización más eficaces que puedes seguir.
¿Por qué es tan importante la optimización del rendimiento de Laravel?
Los desarrolladores deben prestar mucha atención al rendimiento de cada aplicación Laravel antes de lanzarla para garantizar su éxito. Es una de las varias cualidades que debe poseer un desarrollador de Laravel.
Optimizar el rendimiento de Laravel con ajustes de código y comandos puede ayudar a conseguirlo, y también puede tener una gran influencia en la eficiencia de tu aplicación.
¿Es Laravel lento?
Laravel es un marco rápido que viene con un montón de características y funciones (por ejemplo, Memcache, soporte de bases de datos, Redis, etc.) para ayudar al rendimiento. Laravel también permite a los profesionales del software producir un código robusto con relativamente poco esfuerzo para cumplir los objetivos de sus proyectos, ya sean grandes o pequeños.
Como los datos se almacenan como pares clave-valor en la memoria RAM del servidor, los usuarios pueden almacenar en caché todo lo que quieran para mantener sus aplicaciones o sitios de forma rápida y sin problemas. Según Google Trend, Laravel es actualmente la herramienta de backend más popular para PHP.
El recientemente lanzado Laravel 9 ofrece nuevas mejoras de rendimiento. Por ejemplo, tiene especificaciones mínimas de PHP y requiere Symphony 6.0, que se ejecuta un 20,65% más rápido en PHP 8.1. El nuevo diseño del comando route:list reduce ahora la visión desordenada de los comandos complejos. Laravel 9 también incluye una interfaz de construcción de consultas más eficiente, y muchas más características.
Sin embargo, algunos factores contribuyen a un rendimiento lento de Laravel. Muchos desarrolladores tienen malos hábitos, como subir un gran número de imágenes pesadas, utilizar versiones antiguas de PHP, compilar volúmenes masivos de datos innecesarios o descuidar la eliminación de archivos innecesarios de sus proyectos.
La sofisticada arquitectura PHP MVC de Laravel y las bibliotecas asociadas proporcionan una excelente combinación de seguridad, rendimiento y usabilidad. Por eso es una buena regla general aprender algunos trucos de optimización de Laravel para conseguir un mayor rendimiento.
La velocidad del sitio web es importante
Las primeras impresiones son duraderas para cualquier imagen de marca. La velocidad del sitio web es la primera impresión que causan los visitantes de tu sitio web. ¿Sabías que cerca del 50% de los clientes online abandonan los sitios web que tardan más de tres segundos en cargar?
La velocidad del sitio web (también conocida como rendimiento del sitio web) se refiere a la cantidad de tiempo que tarda un navegador en cargar páginas web totalmente operativas de un sitio web específico. Por lo tanto, tiene un impacto directo en la experiencia del usuario (UX) y en las tasas de conversión.
El rendimiento del sitio web también afecta a tu clasificación SEO en los motores de búsqueda. Si varios sitios ofrecen la información que busca tu visitante, las páginas web más rápidas aparecerán primero. Si tu sitio es lento, será menos probable que aparezca en los resultados de búsqueda de Google.
En consecuencia, debes invertir algo de tiempo en aplicar soluciones eficaces de optimización del rendimiento del sitio web.
Beneficios de la optimización del rendimiento de Laravel
Aunque hayas diseñado una fantástica aplicación Laravel, siempre hay margen de mejora para alcanzar la perfección. Aumentar el rendimiento de tu Laravel tiene una serie de beneficios:
- Impulsar el crecimiento del negocio: Un mejor rendimiento de Laravel significa un sitio web o una aplicación más eficiente. Como resultado, tus posibilidades de llegar a un público más amplio aumentan.
- Entorno de desarrollo más fluido: Los consejos de optimización del rendimiento de Laravel que se enumeran a continuación ayudan a los desarrolladores a ahorrar más tiempo en la codificación, a ejecutar las tareas más rápidamente y a consumir menos recursos.
- Manejar mejor el tráfico: Aprender a utilizar inteligentemente el sistema de colas de Laravel ayuda a tu sitio web a gestionar el número de peticiones a medida que crece y recibe una gran cantidad de tráfico.
¿Cómo medir el rendimiento de Laravel?
Has invertido mucho tiempo y esfuerzo en hacer que tu elegante aplicación web funcione, pero si es lenta, nadie la usará y estarás como un oso con la cabeza dolorida. Aquí es donde entran en juego las pruebas de rendimiento de Laravel.
Puedes utilizar diversas herramientas para realizar pruebas de rendimiento en tu preciosa creación. Veamos tres de ellas.
1. Blackfire.io
Blackfire.io es un perfilador intuitivo de aplicaciones web que identifica los caminos esenciales para que puedas concentrarte en las áreas importantes de tu aplicación PHP.
Incluye múltiples funciones de supervisión del rendimiento y muestra el uso de la memoria, el tiempo de la CPU y la E/S. Blackfire.io también te permite ordenar las llamadas a funciones y las vías de acceso para ver cómo funciona tu aplicación Laravel.
2. Laravel Dusk
Laravel Dusk te permite probar tu aplicación y comprobar cómo funciona desde la perspectiva del usuario. No necesitas instalar Selenium o JDK para utilizar Dusk, ya que incluye Chromedriver por defecto.
Con una API amigable para el desarrollador como Dusk, puedes automatizar las pruebas del navegador, evitando la necesidad de los rigurosos procesos que requieren ChromeDriver y PHP WebDriver por separado.
Además, Dusk almacena las capturas de pantalla y la salida de la consola del navegador de las pruebas fallidas para que puedas pescar cualquier error.
3. LoadForge
Adaptado a Laravel, LoadForge escanea tu sitio web automáticamente, identifica los problemas y proporciona gráficos completos junto con estadísticas de rendimiento para cada página.
En Chrome, LoadForge te permite capturar las acciones del navegador y convertirlas posteriormente en una prueba de LoadForge. De este modo, podrás crear una experiencia de usuario realista simulando que se registran, navegan por tu sitio web o incluso realizan pedidos.
¿Cómo optimizar el rendimiento de Laravel? (17 métodos)
En esta sección, repasaremos algunas de las mejores ideas y tácticas con un peine de dientes finos para ayudarte a mejorar el rendimiento de tu Laravel.
1. Caché de rutas
El almacenamiento en caché de rutas es una característica excelente, especialmente para aplicaciones con un gran número de configuraciones y rutas repartidas por el código. Se trata de un grupo de rutas empaquetadas en un solo comando para ayudar a reducir la tediosa tarea de trazar tus rutas manualmente. Como resultado, las páginas de tu sitio web se cargarán mucho más rápido.
El almacenamiento en caché de las rutas permite a Laravel recuperar periódicamente las rutas de la caché precompilada en lugar de tener que empezar desde cero para cada nuevo usuario.
Utiliza este comando para almacenar en caché los datos de las rutas necesarias:
php artisan route:cache
Ten en cuenta que la caché caduca cuando el usuario abandona tu sitio. También es importante ejecutar ese comando de caché de rutas cada vez que se realicen cambios estructurales (por ejemplo, archivos de rutas y configuración) en tu sitio web, ya que cualquier modificación realizada después no tendrá efecto.
Si quieres borrar la caché de rutas, ejecuta el siguiente comando:
php artisan route:clear
2. Optimizar Composer
Laravel utiliza una herramienta independiente llamada Composer para gestionar las diferentes dependencias. Cuando instalas inicialmente Composer, carga por defecto las dependencias de desarrollo en tu sistema.
Estas dependencias son útiles para desarrollar un sitio web. Pero una vez que tu sitio esté completamente operativo, ya no son necesarias, y de hecho, sólo lo ralentizarán.
Cuando utilices Composer para instalar paquetes, utiliza los parámetros --no-dev
y -o
de la siguiente manera para eliminar las dependencias dev:
composer install --prefer-dist --no-dev -o
Este comando permite a Composer crear un directorio para optimizar el autoloader y aumentar el rendimiento. Simplemente solicita que se recupere y empaquete la distribución oficial, sin dependencias dev.
Ten cuidado de no eliminar ninguna dependencia en tiempo de ejecución. Esto podría poner en peligro el rendimiento de tu sitio web o incluso hacer que se bloquee.
3. Reduce los servicios autocargados
El objetivo de Laravel es hacer que el proceso de desarrollo sea lo más fácil posible para los desarrolladores. Cuando lanzas Laravel, por ejemplo, autocarga un gran número de proveedores de servicios que aparecen en el archivo config/app.php para ayudarte a empezar con tu proyecto rápidamente.
Aunque este es un paso beneficioso para Laravel, no necesitarás utilizar todos estos servicios para construir una aplicación.
Por ejemplo, la API REST. No necesitas servicios como View Service Provider o Session Service Provider. Además, muchos desarrolladores no siguen la configuración por defecto del framework. Puedes simplemente desactivar los servicios que son superfluos para tus necesidades (por ejemplo, el Proveedor de Servicios de Paginación, el Proveedor de Servicios de Traducción, el Proveedor de Servicios de Autoría, etc.).
Podrás mejorar la velocidad de tus aplicaciones Laravel aplicando el mismo principio a otras aplicaciones. Sólo tienes que asegurarte de no eliminar ningún servicio importante, y comprobarlo todo dos veces antes de soltar el martillo.
4. Utiliza los comandos de Artisan y la caché de forma eficaz
Artisan es una popular herramienta de línea de comandos que viene con Laravel. Facilita a los desarrolladores la realización de tareas recurrentes y complejas de forma automática. Los creadores de sitios web también pueden utilizarla para realizar pruebas y generar comandos.
Utilizar los comandos de Artisan de forma inteligente puede aumentar el rendimiento de tu aplicación. A continuación, hemos enumerado varios de los mejores comandos de almacenamiento en caché que puedes utilizar.
Caché de configuración
La caché de configuración es un comando excelente para conseguir un aumento de la velocidad. Compila todos los valores de configuración de tu aplicación en un archivo para que el framework pueda cargar más rápido. Todo lo que necesitas es ejecutar:
php artisan config:cache
Ten en cuenta que no debes ejecutar el comando config cache durante el desarrollo local. Esto se debe a que es posible que los ajustes de configuración deban cambiarse a menudo a lo largo del desarrollo de tu aplicación.
Para borrar la caché de configuración, ejecuta este comando:
php artisan config:clear
Caché de vistas
La caché de vistas es otro aspecto de la aplicación que contiene una caché. La caché de vistas almacena las plantillas de Blade generadas para aumentar la velocidad de tu proyecto. Puedes utilizar el siguiente comando artisan para compilar todas las vistas manualmente y optimizar el rendimiento:
php artisan view:cache
Recuerda borrar la caché cuando subas un nuevo código; de lo contrario, Laravel utilizará tus antiguas vistas y perderás mucho tiempo intentando solucionar el problema. Ejecuta este comando para borrar la caché de las vistas:
php artisan view:clear
Caché de la aplicación
Esta es la caché principal de Laravel. Guarda todos los datos que almacenas manualmente en tu aplicación. El uso de la caché de Laravel es un enfoque inteligente para acelerar los datos de acceso común y optimizar el rendimiento de Laravel. Si utilizas etiquetas o un almacenamiento múltiple en la caché, puedes vaciar sólo ciertos elementos de la caché.
Aquí tienes el comando artisan para borrar la caché de Laravel:
php artisan cache:clear
Ten en cuenta que este comando no borrará ninguna ruta, configuración o vista de la caché situada en la carpeta /bootstrap/cache/.
5. Reducir el uso de paquetes
Como marco de trabajo de código abierto con una comunidad populosa, es natural ver más y más paquetes liberados o nuevas versiones en paquetes existentes en Laravel. Eres libre de utilizarlos y sus características directamente en tu aplicación.
Debes incluir estos paquetes en el archivo composer.json
. Posteriormente, Laravel los instalará junto con sus dependencias.
No obstante, hay que tener en cuenta algunos factores antes de añadir nuevos paquetes a cualquier aplicación. Por ejemplo, no todos están diseñados para el mismo propósito. Algunos paquetes se crean para realizar una amplia gama de funciones.
Cuando incluyes paquetes con muchas dependencias, el tamaño de la aplicación crece, y su rendimiento acaba sufriendo. Por eso es esencial revisar bien las dependencias antes de añadir cualquier paquete.
6. Actualiza a la última versión de PHP
Al igual que cualquier otro fragmento de código o programa de software, siempre es mejor actualizar tu versión de PHP a la más reciente.
La razón principal para utilizar una versión actualizada de PHP es la seguridad. Durante dos años, cada versión de PHP recibe parches de seguridad y correcciones de errores. Tu sistema podría estar en peligro si sigues utilizando versiones anteriores que ya no se mantienen.
Muchos desarrolladores también desconocen que cuanto más antigua es una versión de PHP, más lento es su rendimiento. Para aumentar la eficiencia, la versión actual de PHP cuenta con destacadas mejoras de rendimiento, como una ejecución más rápida de las peticiones, los enums, las fibras y la caché de herencia.
Aquí en Kinsta, utilizamos la última versión principal de PHP (PHP 8.1) para todos los entornos, de modo que los usuarios puedan beneficiarse de las amplias capacidades de la plataforma y optimizar sus aplicaciones para obtener la máxima velocidad y eficiencia.
7. Utiliza colas
Descargar las tareas lentas a una cola de trabajo es una técnica sencilla para maximizar rápidamente la velocidad de tu aplicación Laravel.
A veces no necesitas la información en la interfaz de usuario de inmediato. En este caso, dichas tareas pueden posponerse y ejecutarse más tarde en segundo plano mediante un proceso independiente (por ejemplo, el envío de un correo electrónico). Esto puede aumentar significativamente el rendimiento de las solicitudes en línea de tu aplicación.
Laravel admite diversos controladores de colas, como IronMQ, Redis, Amazon SQS y Beanstalkd. Además, incluye un trabajador de colas integrado que puede ejecutarse con el siguiente comando:
php artisan queue:work
Puedes añadir un nuevo trabajo a la cola utilizando este método:
Queue::push('SendEmail', array('message' => $message));
Utiliza el siguiente método a través de Carbon si quieres aplazar la ejecución de uno de los trabajos en cola. Por ejemplo, digamos que quieres programar un trabajo que envíe un correo electrónico a un cliente 10 minutos después de que cree una cuenta:
$date = Carbon::now()->addMinutes(10);
Queue::later($date, 'SendEmail@send', array('message' => $message));
8. Utiliza la herramienta de despliegue para apelar a todos los comandos
Vale, nos damos cuenta de que esto no es un consejo de rendimiento puro para Laravel, pero es una maravillosa técnica de ahorro de tiempo para los desarrolladores que es tan importante para mejorar la productividad.
Deployer es una herramienta de despliegue basada en PHP que te permite desplegar tu código en diferentes servidores. Incluye scripts para frameworks populares, como Laravel, Symfony, Zend, Magento, CakePHP y otros.
Si no has tratado antes con Composer para administrar las dependencias de tu proyecto, te familiarizarás con Deployer rápidamente. Utiliza esta herramienta para automatizar todas las operaciones de despliegue de tu máquina, como el lanzamiento del servidor, la clonación a un servidor remoto y la supervisión de un host remoto.
Deployer dispone de ajustes para ejecutar migraciones, sembrados y funciones de optimización en aplicaciones Laravel con un solo comando:
php deployer.phar deploy production
9. Utiliza Lumen para proyectos pequeños
Hay ocasiones en las que el desarrollo de una aplicación pequeña (por ejemplo, aplicaciones móviles o Angular) no exige el uso de un framework full-stack como Laravel. En este caso, considera el uso de Lumen en su lugar.
Lumen es un microframework desarrollado por el mismo creador de Laravel. Como una versión más ligera de Laravel, Lumen se centra en la velocidad y el rendimiento de los microservicios. Requiere una configuración mínima y parámetros de enrutamiento alternativos al construir aplicaciones web, lo que permite un proceso de desarrollo más rápido.
Por ejemplo, Lumen puede manejar 100 peticiones por segundo. También puedes integrar herramientas o paquetes de terceros para obtener nuevas funciones. Además, Lumen es compatible con todas las plataformas y te permite actualizar a Laravel.
10. Aprovecha el compilador JIT
PHP es un lenguaje del lado del servidor que requiere intérpretes para traducir el código a un bytecode, que el ordenador pueda entender.
Este proceso lleva mucho tiempo y consume muchos recursos. Por eso los programadores recurren a motores de scripting como el motor Zend para ejecutar subrutinas en C que deben repetirse cada vez que se ejecuta una aplicación, lo que ralentiza tu aplicación.
En aras de la eficiencia, los desarrolladores utilizan el compilador justo a tiempo (JIT) para repetir ese procedimiento sólo una vez. HHVM, que fue inventado y es ampliamente utilizado por Facebook, es el compilador JIT preferido para Laravel. Etsy, Wikipedia y docenas de otros sitios también lo utilizan.
11. Utiliza Eager Loading
Para interactuar con las bases de datos de forma agradable, Laravel proporciona un fantástico mapeador relacional de objetos (ORM) llamado Eloquent. Te permite relacionar las tablas y tratar todas las funciones CRUD en PHP de forma sencilla.
Cuando recuperas modelos de una base de datos y luego realizas cualquier tipo de procesamiento en sus relaciones, los datos de las relaciones se «cargan de forma perezosa». Esto significa que los datos no se cargan hasta que se accede a la relación.
Acabarás ejecutando N+1 consultas para encontrar tu respuesta con la carga perezosa, como se ilustra en el siguiente ejemplo:
$books = AppBook::all();
foreach ($books as $book) {
echo $book->author->name;
}
Para optimizar el rendimiento de Laravel y resolver el problema de las N+1 consultas, Laravel puede «cargar con avidez» los datos, como se muestra a continuación:
$books = AppBook::with('author')->get();
foreach ($books as $book) {
echo $book->author->name;
}
12. Comprimir imágenes
Las imágenes juegan un papel importante en el diseño de un sitio web. Son esenciales para mejorar la experiencia del usuario (UX) e impulsar las clasificaciones de búsqueda.
El tiempo medio de carga de un sitio web es de dos segundos. Las imágenes pesadas reducen la velocidad de carga de un sitio. Si tienes un sitio web lento, es muy probable que acabes perdiendo muchos visitantes.
La compresión de imágenes minimiza el tamaño de tu imagen original sin sacrificar su calidad, ayudando a optimizar la velocidad del sitio. Por esta razón, Laravel ofrece buenas opciones para comprimir fotos, como TinyPNG, reSmush.it o ImageMin.
13. Utiliza una CDN
El uso de una red de distribución de contenidos (CDN) puede optimizar realmente el rendimiento de Laravel. Al cargar el contenido estático desde un servidor CDN en lugar de hacerlo directamente desde la máquina en la que están alojados tus archivos, los datos llegan a tu audiencia más rápidamente.
En otras palabras, almacena en caché la versión más reciente de tu sitio en una red global de servidores en la nube. Por lo tanto, aunque tus visitantes estén geográficamente alejados de tu ubicación, podrán acceder a tu sitio web rápidamente.
La CDN de Kinsta está impulsada por Cloudflare y se proporciona de forma gratuita. Permite que los archivos almacenados en caché de tu sitio web se entreguen desde tu dominio principal en lugar de un dominio CDN secundario, impulsando tu posicionamiento SEO.
Además, Kinsta CDN ayuda a eliminar componentes no deseados de tus archivos JavaScript (JS) y CSS. Esto reduce en gran medida el tiempo de carga de las páginas de tu sitio y el consumo de ancho de banda.
14. Minimiza el código JS y CSS
Da un empujón para aumentar el rendimiento de tu Laravel minificando tus archivos JavaScript y CSS antes de proceder al proceso de agrupación de activos.
Este paso de minificación elimina todo el código innecesario de tu aplicación, como los espacios en blanco, los comentarios y el renombramiento de variables con nombres abreviados. Si es necesario, puedes cambiar el tamaño de tus imágenes para crear miniaturas.
Como resultado, mejorarás tu UX a la vez que disminuyes las llamadas HTTP.
15. Emplea la agrupación de activos
Hay varias herramientas disponibles para comprimir y agrupar archivos como Javascript y CSS en uno solo, como Laravel Mix y Laravel Packer.
Todas las aplicaciones de Laravel incluyen Laravel Mix por defecto. Es una API fácil de usar que se utiliza para crear construcciones Webpack para tus aplicaciones PHP, utilizando una serie de preprocesadores comunes de JavaScript y CSS.
Suponiendo que necesites una determinada colección de formatos de estilo para tu archivo de aplicación, puedes introducir algo así
mix.styles([
'public/css/vendor/normalize.css',
'public/css/styles.css'
], 'public/css/all.css');
Ahora, Laravel Mix generará un archivo all.css
a partir de los archivos normalize.css
y style.css
automáticamente. Por tanto, en lugar de obtener cada hoja de estilo por separado, puedes combinarlas en un único archivo all.css.
Laravel Packer es una herramienta de línea de comandos que se puede instalar a través de Composer. Te permite reducir y agrupar tu código JS y CSS. Sin embargo, es más difícil de usar que Laravel Mix.
Aunque este truco es estupendo para aumentar el rendimiento de Laravel, la fusión de muchos archivos lo hará enorme y acabará teniendo el efecto contrario. Para solucionar este problema, utiliza Laravel Mix para reducir tus archivos ejecutando este comando:
npm run prod
16. Limitar Bibliotecas Incluidas
Laravel te da la libertad de añadir tantas bibliotecas como quieras. Aunque esta es una característica impresionante, añadir un montón de bibliotecas ejerce una gran presión sobre el rendimiento de tu aplicación. También puede afectar a toda la experiencia del usuario.
Por lo tanto, es vital analizar todos los datos de las bibliotecas que se utilizan actualmente dentro del código. Puedes encontrar estas bibliotecas en la página config/app.php file
. Mientras examinas las bibliotecas, elimina las que sepas que ya no te son útiles.
También es una buena idea revisar composer.json
en busca de dependencias innecesarias.
17. Considera el uso de New Relic
New Relic es una herramienta de gestión del rendimiento de las aplicaciones (APM) que los desarrolladores integran en sus aplicaciones Laravel. Se utiliza para analizar y supervisar las estadísticas que reflejan su rendimiento para optimizar la eficiencia y evitar interrupciones en tiempo real.
New Relic puede ayudarte a evaluar tu puntuación Apdex y a medir cómo se compara tu aplicación con la de tus competidores en el mercado. También te permite crear políticas de alerta en función de tus criterios.
Si no quieres contratar un servicio de terceros, puedes utilizar la herramienta APM de Kinsta. Puede ayudarte a encontrar los cuellos de botella del rendimiento de PHP en tu sitio de WP sin ningún coste adicional.
Resumen
Laravel es un framework PHP de rápido crecimiento, y hay muchos tutoriales disponibles para que todo tipo de usuarios puedan aprender Laravel independientemente de su nivel de conocimiento.
Cuando se trata de la experiencia del usuario en el mundo digital, el rendimiento es un factor crítico para establecer una fuerte presencia online. No es de extrañar que las organizaciones estén dedicando más tiempo y recursos a proporcionar una UX de alta calidad.
Si eres un desarrollador de Laravel, puedes estar seguro de que si utilizas los métodos descritos anteriormente, notarás una mejora significativa en el rendimiento y podrás mantener una aplicación que funcione sin problemas.
¿Qué otros métodos has utilizado para acelerar tus aplicaciones Laravel? Háznoslo saber en la sección de comentarios más abajo.
Deja una respuesta