Você está procurando maneiras bem sucedidas de acelerar o desempenho do Laravel enquanto trabalha em seu projeto? Você veio ao lugar certo!

Laravel é um popular framework PHP open-source que é conhecido por sua robusta segurança e arquitetura de codificação simples, porém sofisticada. É uma ótima escolha para a construção de aplicativos web de ponta capazes de impulsionar a receita e impulsionar as empresas.

Ainda assim, o desempenho do Laravel pode ficar lento se você não usar as técnicas corretas de otimização.

Felizmente, há inúmeros hacks para maximizar o desempenho do Laravel. Nós reunimos uma lista das dicas de otimização mais eficazes que você pode seguir.

Por que a otimização de desempenho do Laravel é tão importante?

Os desenvolvedores devem prestar muita atenção ao desempenho de cada aplicativo Laravel antes de lançá-la para garantir seu sucesso. É uma das várias qualidades que um desenvolvedor Laravel deve possuir.

Otimizar a performance do Laravel com ajustes de código e comandos pode ajudar a alcançar isso e pode ter uma grande influência na eficiência do seu aplicativo também.

Laravel é lento?

Laravel é uma framework rápida que vem com uma carga de recursos e funções (por exemplo, Memcache, suporte a banco de dados, Redis, etc.) para ajudar na performance. Laravel também permite que profissionais de software produzam código robusto com relativamente pouco esforço para atingir seus objetivos de projeto grandes ou pequenos.

Como os dados são armazenados como pares de valores chave na RAM do servidor, os usuários podem fazer o cache do quanto quiserem para manter seus aplicativos ou sites de forma rápida e suave. Baseado na tendência do Google, Laravel é atualmente a ferramenta backend mais popular para PHP.

A popularidade do Laravel no Google
A popularidade do Laravel no Google (Fonte de Imagem: Google Trend)

O recentemente lançado Laravel 9 oferece novas melhorias de desempenho. Por exemplo, ele tem especificações mínimas de PHP e requer o Symphony 6.0 que roda 20,65% mais rápido no PHP 8.1. O novo design para o comando route:list agora reduz a visão bagunçada de comandos complexos. Laravel 9 também inclui uma interface mais eficiente de Query Builder e muitos mais recursos.

No entanto, alguns fatores contribuem para um desempenho lento do Laravel. Muitos desenvolvedores têm maus hábitos, como carregar um grande número de imagens pesadas, usar versões antigas do PHP, compilar volumes enormes de dados desnecessários, ou negligenciar a remoção de arquivos desnecessários de seus projetos.

A sofisticada arquitetura PHP MVC do Laravel e bibliotecas associadas fornecem uma excelente combinação de segurança, desempenho e usabilidade. É por isso que é uma boa regra de ouro aprender alguns hacks de otimização do Laravel para alcançar uma performance mais alta.

A velocidade do site é importante

As primeiras impressões são duradouras para qualquer imagem de marca. A velocidade do site é a primeira impressão que você causa nos visitantes do seu site. Você sabia que cerca de 50% dos clientes online abandonam sites que levam mais de três segundos para serem carregados?

Velocidade do site
Velocidade do site (Fonte da imagem: Cuso Magazine)

A velocidade do site (aka website performance) refere-se à quantidade de tempo que um navegador leva para carregar páginas web totalmente operacionais a partir de um site específico. Portanto, ela tem um impacto direto na experiência do usuário (UX) e nas taxas de conversão.

O desempenho do site também afeta a sua classificação SEO nos motores de busca. Se vários sites oferecem as informações que seu visitante procura, páginas web mais rápidas aparecerão primeiro. Se o seu site for lento, será menos provável que ele fique em alta nos resultados de busca do Google.

Assim, você deve investir algum tempo na aplicação de  soluções eficazes de otimização de desempenho do site.

Benefícios da otimização de desempenho do Laravel

Embora você possa ter projetado um fantástico aplicativo do Laravel, há sempre espaço para melhorias para alcançar a perfeição. Aumentar o desempenho do seu Laravel tem uma série de benefícios:

  • Impulsionando o crescimento dos negócios: Melhor desempenho do Laravel significa um site ou aplicativo mais eficiente. Como resultado, suas chances de alcançar uma audiência maior aumentam.
  • Ambiente de desenvolvimento mais suave: As dicas de otimização de desempenho para Laravel listadas abaixo ajudam os desenvolvedores a economizar mais tempo na codificação, executar tarefas mais rapidamente e consumir menos recursos.
  • Lidando melhor com o tráfego: Aprender como usar inteligentemente o sistema de fila de espera Laravel ajuda o seu site a gerenciar números de pedidos à medida que ele cresce e capta uma grande quantidade de tráfego.

Como medir o desempenho do Laravel

Você investiu muito tempo e esforço para fazer seu aplicativo web snazzy funcionar, mas se for lento, ninguém vai usá-lo e você será como um urso com a cabeça dolorida. É aqui que entram os testes de desempenho do Laravel.

Você pode usar uma variedade de ferramentas para realizar testes de desempenho em sua preciosa criação. Vamos dar uma olhada em três delas.

1. Blackfire.io

Blackfire.io
Blackfire.io (Fonte: Blackfire.io)

Blackfire.io é um profiler intuitivo de aplicativos web que identifica caminhos essenciais para que você possa se concentrar nas áreas importantes do seu aplicativo PHP.

Ele inclui múltiplos recursos de monitoramento de desempenho e exibe o uso de memória, tempo de CPU, assim como I/O. O Blackfire.io também permite que você classifique chamadas de funções e caminhos para ver como o seu aplicativo Laravel funciona.

2. Laravel Dusk

Laravel Dusk
Laravel Dusk (Fonte: ELSNER)

Laravel Dusk permite que você teste o seu aplicativo e verificar como ela funciona a partir da perspectiva do usuário. Você não precisa instalar o Selenium ou JDK para usar o Dusk, pois ele inclui o Chromedriver por padrão.

Com uma API amigável como Dusk, você pode automatizar os testes do navegador, excluindo a necessidade de processos rigorosos exigidos pelo ChromeDriver e PHP WebDriver separadamente.

Além disso, o Dusk armazena screenshots e saída do console do navegador do teste falhado para que você seja capaz de pescar qualquer bug.

3. LoadForge

LoadForge
LoadForge (Fonte: LoadForge)

Feito sob medida para Laravel, LoadForge escaneia seu site automaticamente, identifica problemas e fornece gráficos abrangentes juntamente com estatísticas de desempenho para cada página.

No Chrome, LoadForge permite que você capture as ações do navegador e posteriormente as converta em um teste LoadForge. Desta forma, você será capaz de criar uma experiência de usuário realista, simulando o login, navegando no seu site ou até mesmo fazendo pedidos.

Como otimizar o desempenho do Laravel (17 métodos)

Nesta seção, nós passaremos por algumas das melhores idéias e táticas com um pente fino para ajudar você a melhorar seu desempenho Laravel.

1. Cache de rota

O cache de rotas é uma excelente característica, especialmente para aplicativos com um grande número de configurações e rotas espalhadas pelo código. É um grupo de rotas embalado em um único comando para ajudar a reduzir a tediosa tarefa de traçar suas rotas manualmente. Como resultado, as páginas do seu site irão carregar muito mais rápido.

O cache de rotas permite que Laravel recupere rotas periodicamente do cache pré-compilado ao invés de ter que começar do zero para cada novo usuário.

Use este comando para fazer o cache dos dados de roteamento necessários:

php artisan route:cache

Tenha em mente que o cache expira quando o usuário deixa o seu site. Também é importante executar esse comando de cache de rotas toda vez depois de fazer mudanças estruturais (por exemplo, arquivos de rotas e configuração) em seu site, pois qualquer modificação feita depois disso não terá efeito.

Se você quiser limpar o cache da rota, execute o seguinte comando:

php artisan route:clear

2. Otimize o Composer

Laravel usa uma ferramenta separada chamada Composer para gerenciar diferentes dependências. Quando você inicialmente instala o Composer, ele carrega as dependências no seu sistema por padrão.

Estas dependências são úteis para o desenvolvimento de um site. Mas uma vez que seu site esteja totalmente operacional, elas não são mais necessárias e, de fato, elas apenas o retardarão.

Ao utilizar o Composer para instalar pacotes, use os parâmetros --no-dev e -o como a seguir para remover dependências de dispositivos:

composer install --prefer-dist --no-dev -o

Este comando permite que o Composer crie um diretório para otimizar o autoloader e aumentar o desempenho. Ele simplesmente solicita que a distribuição oficial seja recuperada e empacotada, sem dependências de desenvolvimento.

Tenha cuidado para não eliminar nenhuma dependência de tempo de execução. Isso pode prejudicar o desempenho do seu site ou até mesmo causar o seu colapso.

3. Reduza serviços auto carregados

O objetivo do Laravel é fazer com que o processo de desenvolvimento seja o mais fácil possível para o desenvolvimento de projetos. Quando você lança Laravel, por exemplo, ele carrega automaticamente um grande volume de provedores de serviços listados no arquivo config/app.php para ajudá-lo a começar com o seu projeto rapidamente.

Embora este seja um passo benéfico do Laravel, você não precisará usar todos estes serviços para construir um aplicativo.

Pegue a API REST, por exemplo. Você não precisa de serviços como View Service Provider ou Session Service Provider. Além disso, muitos desenvolvedores não seguem as configurações padrão do framework. Você pode simplesmente desativar serviços que são supérfluos para suas necessidades (por exemplo, Pagination Service Provider, Translation Service Provider, Auth Service Provider, etc).

Você será capaz de melhorar a velocidade de seus aplicativos Laravel aplicando o mesmo princípio a outros aplicativos. Apenas certifique-se de não remover nenhum serviço importante, e verifique tudo novamente antes de soltar o martelo.

4. Use comandos Artisan e cache de forma eficaz

Artisan é uma ferramenta de linha de comando popular que vem com Laravel. Ela torna fácil para os desenvolvedores realizarem tarefas recorrentes e complexas automaticamente. Os criadores do site também podem usá-lo para conduzir testes e gerar comandos.

Usando os comandos Artisan habilmente pode aumentar o desempenho do seu aplicativo. Abaixo, nós listamos vários dos melhores comandos de cache que você pode utilizar.

Cache de configuração

Cache config é um excelente comando para obter um aumento de velocidade. Ele compila todos os valores de configuração do seu aplicativo em um único arquivo para que o framework possa carregar mais rapidamente. Tudo o que você precisa é rodar:

php artisan config:cache

Note que você não deve executar o comando config cache durante o desenvolvimento local. Isto porque as configurações podem precisar ser alteradas com frequência durante o desenvolvimento do seu aplicativo.

Para limpar o cache de configuração, execute este comando:

php artisan config:clear

Cache de vistas

O view cache é outro aspecto do aplicativo que contém um cache. O cache de visualização armazena os modelos Blade gerados para aumentar a velocidade do seu projeto. Você pode usar o comando Artisan abaixo para compilar todas as visualizações manualmente e otimizar o desempenho:

php artisan view:cache

Lembre-se de limpar o cache quando você carregar um novo código; caso contrário, Laravel usará suas opiniões antigas e você gastará muito tempo tentando resolver este problema. Execute este comando para limpar o cache de visualizações:

php artisan view:clear

Cache de aplicativos

Este é o cache principal em Laravel. Ele salva todos os dados que você armazena manualmente no seu aplicativo. Usar o cache do Laravel é uma abordagem inteligente para acelerar os dados comumente acessados e otimizar o desempenho do Laravel. Se você usar tags ou armazenamento em cache múltiplo, você pode lavar apenas certos elementos do cache.

Aqui está o comando Artisan para limpar o cache do Laravel:

php artisan cache:clear

Tenha em mente que este comando não irá apagar nenhuma rota, configuração ou visualização do cache localizado na pasta /bootstrap/cache/.

5. Reduza o uso do pacote

Como um framework open-source com uma comunidade populosa, é natural ver mais e mais pacotes lançados ou novas versões em pacotes existentes em Laravel. Você está livre para usá-los e suas funcionalidades diretamente em seu aplicativo.

Você deve incluir estes pacotes no arquivo composer.json. Laravel irá instalá-los posteriormente juntamente com suas dependências.

No entanto, há alguns fatores a serem considerados antes de adicionar novos pacotes a qualquer aplicativo. Eles não são todos projetados para o mesmo propósito, por exemplo. Alguns pacotes também são criados para executar uma ampla gama de funções.

Quando você inclui pacotes com muitas dependências, o tamanho do aplicativo cresce, e seu desempenho eventualmente sofre. É por isso que é essencial rever as dependências de perto antes de adicionar qualquer pacote.

6. Atualize para a versão mais recente do PHP

Como qualquer outro pedaço de código ou programa de software, é sempre melhor atualizar sua versão PHP para o lançamento mais recente.

A principal razão para usar uma versão atualizada do PHP é a segurança. Por dois anos, cada versão do PHP recebe patches de segurança e correções de bugs. Seu sistema pode ser comprometido se você continuar a usar versões anteriores que não estão mais sendo mantidas.

Muitos desenvolvedores também podem não saber que quanto mais velha uma versão PHP fica, mais lento se torna o seu desempenho. Para aumentar a eficiência, a versão atual do PHP tem melhorias de desempenho excepcionais, tais como execução mais rápida de pedidos, enumeração, fibras e cache de herança.

Aqui na Kinsta, usamos a última grande versão do PHP (PHP 8.1) para todos os ambientes para que os usuários possam se beneficiar das extensas capacidades da plataforma e otimizar seus aplicativos para a máxima velocidade e eficiência.

7. Use filas de espera

Descarregar tarefas lentas para um trabalho de fila é uma técnica simples para maximizar rapidamente a velocidade do seu aplicativo Laravel.

Às vezes você não precisa da informação na IU imediatamente. Neste caso, tais tarefas podem ser adiadas e executadas mais tarde em segundo plano por um processo separado (por exemplo, o envio de um e-mail). Isto pode aumentar significativamente o desempenho das solicitações online do seu aplicativo.

Laravel suporta uma variedade de driver de fila como IronMQ, Redis, Amazon SQS, e Beanstalkd. Além disso, ele inclui um operador de fila embutido que pode ser executado usando o seguinte comando:

php artisan queue:work

Você pode adicionar um novo trabalho na fila usando este método:

Queue::push('SendEmail', array('message' => $message));

Use o método abaixo via Carbon se você quiser adiar a execução de um dos trabalhos em fila de espera. Por exemplo, digamos que você queira agendar um trabalho que envie um e-mail para um cliente 10 minutos após eles criarem uma conta:

$date = Carbon::now()->addMinutes(10);

Queue::later($date, 'SendEmail@send', array('message' => $message));

8. Use a ferramenta de implantação (Deployer) para apelar a todos os comandos

Ok, percebemos que esta não é uma pura dica de desempenho para Laravel, mas é uma técnica maravilhosa de economia de tempo para os desenvolvedores que é tão importante para melhorar a produtividade.

Deployer é uma ferramenta de implantação baseada em PHP que permite a você implantar seu código em diferentes servidores. Ele inclui scripts para frameworks populares, como Laravel, Symfony, Zend, Magento, CakePHP, e muito mais.

Se você não lidou com o Composer antes para administrar as dependências do seu projeto, você se familiarizará rapidamente com o Deployer. Use esta ferramenta para automatizar todas as operações de implantação de sua máquina, como o lançamento do servidor, clonagem para um servidor remoto e monitoramento de um host remoto.

O Deployer possui configurações para executar migrações, seedes e funções de otimização em aplicativos Laravel com um único comando:

php deployer.phar deploy production

9. Use Lumen para pequenos projetos

Há ocasiões em que o desenvolvimento de um pequeno aplicativo (por exemplo, aplicativos móveis ou angulares) não exige o uso de uma framework completa como Laravel. Neste cenário, considere o uso do Lumen em seu lugar.

Lumen é uma microestrutura desenvolvida pelo mesmo criador do Laravel. Como uma versão mais leve do Laravel, Lumen tem tudo a ver com velocidade e desempenho para micro serviços. Ele requer o mínimo de configuração e parâmetros alternativos de roteamento ao construir aplicativos web, permitindo um processo de desenvolvimento mais rápido.

Por exemplo, a Lumen pode lidar com 100 pedidos por segundo. Você também pode integrar ferramentas ou pacotes de terceiros para obter novos recursos. Além disso, a Lumen suporta todas as plataformas e permite que você atualize para Laravel.

10. Alavancagem do Compilador JIT

PHP é uma linguagem do lado do servidor que requer intérpretes para traduzir o código para um bytecode, que o computador pode entender.

Este processo leva muito tempo e consome muitos recursos. É por isso que os programadores vão para mecanismo de script como o mecanismo Zend para executar sub-rotinas C que devem ser repetidas toda vez que um aplicativo é executado, o que torna seu aplicativo mais lento.

Por uma questão de eficiência, os devs usam o compilador just-in-time (JIT) para repetir esse procedimento apenas uma vez. O HHVM, que foi inventado e é amplamente utilizado pelo Facebook, é o compilador JIT preferido do Laravel. Etsy, Wikipedia, e dezenas de outros sites também o usam.

11. Faça uso de Eager Loading

Para interagir com bancos de dados de forma agradável, Laravel fornece um mapeador relacional de objetos fantástico (ORM) chamado Eloquent. Ele permite que você relacione as tabelas e lide com todas as funções CRUD em PHP em um formato simples.

Quando você recupera modelos de um banco de dados e então executa qualquer tipo de processamento em suas relações, os dados da relação são “carregados preguiçosamente“. Isto significa que os dados não são carregados até que você acesse o relacionamento.

Você vai acabar executando consultas N+1 para encontrar sua resposta com carga preguiçosa, como ilustrado no exemplo a seguir:

$books = AppBook::all();

foreach ($books as $book) {

echo $book->author->name;

}

Para otimizar o desempenho do Laravel e resolver o problema de consulta N+1, Laravel pode “carregar preguiçosamente” os dados como mostrado abaixo:

$books = AppBook::with('author')->get();

foreach ($books as $book) {

echo $book->author->name;

}

12. Comprima imagens

As imagens têm um papel importante no design de um site. Elas são essenciais para melhorar a experiência do usuário (UX) e impulsionar o ranking de pesquisa.

O tempo médio de carregamento de um site é de dois segundos. Imagens pesadas desaceleram a velocidade de carregamento de um site. Se você tem um site lento, há uma grande chance de que você acabe perdendo muitos visitantes.

A compressão de imagem minimiza o tamanho de sua imagem original sem sacrificar sua qualidade, ajudando na otimização da velocidade do site. Por esta razão, Laravel oferece opções de compressão de fotos como TinyPNG, reSmush.it, ou ImageMin.

13. Use um CDN

Usando uma rede de entrega de conteúdo (CDN) pode realmente otimizar o desempenho do Laravel. Ao carregar conteúdo estático de um servidor CDN em vez de diretamente da máquina na qual seus arquivos estão hospedados, os dados chegam ao seu público mais rapidamente.

Em outras palavras, ele armazena a versão mais recente do seu site em uma rede global de servidores em nuvem. Portanto, mesmo que seus visitantes estejam geograficamente distantes de sua localização, eles ainda serão capazes de acessar seu site rapidamente.

O Kinsta CDN é alimentado pelo Cloudflare e fornecido gratuitamente. Ele permite que os arquivos em cache do seu site sejam entregues a partir do seu domínio primário ao invés de um domínio CDN secundário, aumentando a sua classificação SEO.

Kinsta CDN adicionalmente auxilia na remoção de componentes indesejados de seus arquivos JavaScript (JS) e CSS. Isto reduz muito o tempo que leva para as páginas do seu site serem carregadas e reduz o consumo de banda.

14. Minifique o código JS e CSS

Dê um pontapé para aumentar o desempenho do seu Laravel, minificando seus arquivos JavaScript e CSS antes de prosseguir com o processo de empacotamento de ativos.

Esta etapa de minificação remove qualquer código desnecessário do seu aplicativo, como espaço em branco, comentários e renomeação de variáveis usando nomes abreviados. Se necessário, você pode redimensionar suas imagens para criar thumbnails.

Como resultado, você irá melhorar seu UX enquanto também diminuirá as chamadas HTTP.

15. Empregar agrupamento de Ativos

Há várias ferramentas disponíveis para compactar e agrupar arquivos como Javascript e CSS em um único como Laravel Mix e Laravel Packer.

Todas os aplicativos Laravel incluem Laravel Mix por padrão. É uma API amigável usada para criar compilações de Webpack para os seus aplicativos PHP, usando uma gama de pré-processadores JavaScript e CSS comuns.

Assumindo que você requer uma certa coleção de formatos de estilo para o seu arquivo de aplicativo, você pode inserir algo como isto:

mix.styles([

'public/css/vendor/normalize.css',

'public/css/styles.css'

], 'public/css/all.css');

Agora, Laravel Mix irá gerar um arquivo all.css a partir dos arquivos normalize.css e style.css automaticamente. Portanto, ao invés de obter cada folha de estilo separadamente, você pode combiná-los em um único arquivo all.css.

Laravel Packer é uma ferramenta de linha de comando que pode ser instalada através do Composer. Ele permite que você reduza e agrupe seu código JS e CSS. Entretanto, é mais difícil de usar que o Laravel Mix.

Mesmo que esta dica seja ótima para bombear o desempenho do Laravel, a fusão de muitos arquivos a tornará enorme e eventualmente terá o efeito oposto. Para resolver este problema, use Laravel Mix para encolher seus arquivos executando este comando:

npm run prod

16. Bibliotecas com limiteincluído

Laravel lhe dá a liberdade de adicionar quantas bibliotecas você quiser. Embora este seja um recurso incrível, adicionar um barco cheio de bibliotecas coloca muita pressão sobre o desempenho do seu aplicativo. Isso também pode afetar toda a experiência do usuário.

Portanto, é vital escanear todos os dados das bibliotecas atualmente em uso dentro do código. Você pode encontrar essas bibliotecas no site config/app.php file. Enquanto examina as bibliotecas, remova aquelas que você sabe que não são mais úteis para você.

Também é uma boa ideia rever composer.json para dependências desnecessárias.

17. Considere o uso da New Relic

A New Relic é uma ferramenta de gerenciamento de desempenho de aplicativos (APM) integrada pelos desenvolvedores em seus aplicativos Laravel. É usado para analisar e monitorar estatísticas que refletem seu desempenho para otimizar a eficiência e evitar interrupções em tempo real.

A New Relic pode ajudá-lo a avaliar sua pontuação no Apdex e medir como seu aplicativo se compara aos concorrentes no mercado. Ele também permite que você crie políticas de alerta dependendo de seus critérios.

Se você não quiser se inscrever para um serviço de terceiros, você pode usar a ferramenta APM da Kinsta. Ela pode ajudá-lo a encontrar gargalos de desempenho PHP no seu site WP sem nenhum custo extra.

Resumo

Laravel é um framework PHP em rápido crescimento, e há muitos tutoriais disponíveis para todos os tipos de usuários aprenderem Laravel, independentemente do seu nível de conhecimento.

Quando se trata de experiência do usuário no mundo digital, o desempenho é um fator crítico para estabelecer uma forte presença online. Não é surpresa que as organizações estejam dedicando mais tempo e recursos para fornecer um UX de alta qualidade.

Se você é um desenvolvedor Laravel, você pode se sentir confiante que usando os métodos descritos acima, você notará uma melhoria significativa no desempenho e será capaz de manter um aplicativo de funcionamento suave.

Que outros métodos você usou para acelerar seus aplicativos Laravel? Informe-nos na seção de comentários abaixo.

Mahitab Mostafa

Mahitab é uma escritora de conteúdo profissional, especializada em tecnologia e cibersegurança. Ela já escreveu centenas de artigos sobre WordPress, hospedagem de sites e outros tópicos relacionados. Ela acredita firmemente no papel da internet no futuro dos negócios.