17 métodos para otimizar o desempenho do Laravel

Publicados: 2022-05-25

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

Laravel é um framework PHP de código aberto popular que é conhecido por sua segurança robusta e arquitetura de codificação simples, porém sofisticada. É uma ótima opção para criar aplicativos da Web de ponta capazes de gerar receita e impulsionar os negócios.

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

Felizmente, existem vários hacks para maximizar o desempenho do Laravel. Reunimos uma lista das dicas de otimização mais eficazes que você pode seguir.


Procurando maneiras de acelerar o desempenho do Laravel enquanto trabalha em seu projeto? Não procure mais... Clique para Tweetar

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çá-lo para garantir seu sucesso. É uma das várias qualidades que um desenvolvedor Laravel deve possuir.

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

O Laravel é Lento?

O Laravel é um framework rápido que vem com muitos recursos e funções (por exemplo, Memcache, suporte a banco de dados, Redis, etc.) para ajudar no desempenho. O Laravel também permite que profissionais de software produzam códigos robustos 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 armazenar em cache o quanto quiserem para manter seus aplicativos ou sites de maneira rápida e tranquila. Baseado no Google Trend, o Laravel é atualmente a ferramenta de backend mais popular para PHP.

A popularidade do Laravel no Google Trend
A popularidade do Laravel no Google (Fonte da imagem: Google Trend)

O recém-lançado Laravel 9 oferece novas melhorias de desempenho. Por exemplo, tem especificações PHP mínimas e requer 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 confusa de comandos complexos. O Laravel 9 também inclui uma interface de construtor de consultas mais eficiente e muitos outros recursos.

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

A sofisticada arquitetura PHP MVC do Laravel e as bibliotecas associadas fornecem uma excelente combinação de segurança, desempenho e usabilidade. É por isso que é uma boa regra geral aprender alguns hacks de otimização do Laravel para obter um desempenho mais alto.

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 demoram mais de três segundos para carregar?

Tela do laptop com seta de teste de velocidade da internet
Velocidade do site (Fonte da imagem: Cuso Magazine)

A velocidade do site (também conhecido como desempenho do site) refere-se à quantidade de tempo que um navegador leva para carregar páginas da Web totalmente operacionais de um site específico. Portanto, tem um impacto direto na experiência do usuário (UX) e nas taxas de conversão.

O desempenho do site também afeta sua classificação de SEO nos mecanismos de pesquisa. Se vários sites oferecerem as informações que seu visitante procura, as páginas da Web mais rápidas aparecerão primeiro. Se o seu site estiver lento, será menos provável que ele tenha uma classificação alta nos resultados de pesquisa 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 aplicativo Laravel fantástico, sempre há espaço para melhorias para atingir a perfeição. Aumentar o desempenho do Laravel tem vários 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 um público 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 a usar o sistema de filas Laravel de maneira inteligente ajuda seu site a gerenciar os números de solicitações à medida que cresce e busca uma grande quantidade de tráfego.

Como medir o desempenho do Laravel

Você investiu muito tempo e esforço para fazer seu aplicativo da web elegante funcionar, mas se for lento, ninguém o usará 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 deles.

1. Blackfire.io

Captura de tela da página inicial do site Blackfire.io
Blackfire.io (Fonte: Blackfire.io)

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

Ele inclui vários recursos de monitoramento de desempenho e exibe o uso de memória, tempo de CPU e E/S. O Blackfire.io também permite que você classifique chamadas de função e caminhos para ver como seu aplicativo Laravel funciona.

2. Laravel Crepúsculo

Logotipo do Laravel Dusk com um crescente branco à esquerda e mãos digitando em um laptop à direita
Laravel Dusk (Fonte: ELSNER)

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

Com uma API amigável ao desenvolvedor como o Dusk, você pode automatizar o teste do navegador, eliminando a necessidade de processos rigorosos exigidos pelo ChromeDriver e PHP WebDriver separadamente.

Além disso, o Dusk armazena as capturas de tela e a saída do console do navegador do teste com falha, para que você possa pescar quaisquer bugs.

3. LoadForge

Captura de tela da página inicial do site LoadForge
LoadForge (Fonte: LoadForge)

Adaptado para Laravel, o LoadForge verifica seu site automaticamente, identifica problemas e fornece gráficos abrangentes junto com estatísticas de desempenho para cada página.

No Chrome, o LoadForge permite capturar ações do navegador e, posteriormente, convertê-las em um teste LoadForge. Dessa forma, você poderá criar uma experiência de usuário realista simulando o login, a navegação em seu site ou até mesmo a realização de pedidos.

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

Nesta seção, veremos algumas das melhores ideias e táticas com um pente fino para ajudá-lo a melhorar seu desempenho em Laravel.

1. Cache de Rota

O cache de rotas é um excelente recurso, principalmente para aplicativos com um grande número de configurações e rotas espalhadas pelo código. É um grupo de rotas compactadas 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 carregarão muito mais rápido.

O cache de rotas permite que o Laravel recupere rotas periodicamente do cache pré-compilado, em vez de ter que começar do zero para cada novo usuário.

Use este comando para armazenar em cache os dados de roteamento necessários:

 php artisan route:cache

Lembre-se de que o cache expira quando o usuário sai do site. Também é importante executar esse comando de cache de rota todas as vezes após fazer alterações estruturais (por exemplo, arquivos de rotas e configuração) em seu site, pois quaisquer modificações feitas posteriormente não terão efeito.

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

 php artisan route:clear

2. Otimize o Compositor

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

Essas dependências são úteis para desenvolver um site. Mas assim que seu site estiver totalmente operacional, eles não serão mais necessários e, na verdade, eles apenas o tornarão mais lento.

Ao utilizar o Composer para instalar pacotes, use os parâmetros --no-dev e -o da seguinte forma para remover dependências dev:

 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 comprometer o desempenho do seu site ou até mesmo causar falhas.

3. Reduza os serviços carregados automaticamente

O objetivo do Laravel é tornar o processo de desenvolvimento o mais leve possível para os desenvolvedores. Quando você inicia o Laravel, por exemplo, ele carrega automaticamente um grande volume de provedores de serviços listados no arquivo config/app.php para ajudá-lo a iniciar seu projeto rapidamente.

Embora esta seja uma etapa benéfica do Laravel, você não precisará usar todos esses serviços para criar 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 da estrutura. Você pode simplesmente desabilitar os serviços supérfluos às suas necessidades (por exemplo, Provedor de Serviços de Paginação, Provedor de Serviços de Tradução, Provedor de Serviços de Autenticação, etc).

Você poderá 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 antes de soltar o martelo.

4. Use Comandos Artisan e Cache Efetivamente

Artisan é uma ferramenta de linha de comando popular que vem com o Laravel. Isso torna mais fácil para os desenvolvedores realizar tarefas recorrentes e complexas automaticamente. Os criadores de sites também podem usá-lo para realizar testes e gerar comandos.

Usar comandos Artisan de forma inteligente pode aumentar o desempenho do seu aplicativo. Abaixo, listamos vários dos melhores comandos de cache que você pode utilizar.

Cache de configuração

A configuração de cache é um excelente comando para obter um aumento de velocidade. Ele compila todos os valores de configuração do seu aplicativo em um arquivo para que a estrutura possa carregar mais rapidamente. Tudo que você precisa é executar:

 php artisan config:cache

Observe que você não deve executar o comando config cache durante o desenvolvimento local. Isso ocorre porque as definições de configuração 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 visualizações

O cache de visualização é 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 ao fazer upload de um novo código; caso contrário, o Laravel usará suas visualizações antigas e você gastará muito tempo tentando solucionar isso. Execute este comando para limpar o cache de visualização:

 php artisan view:clear

Cache de aplicativo

Este é o cache principal do Laravel. Ele salva todos os dados que você armazena em cache manualmente em 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, poderá liberar apenas determinados elementos do cache.

Aqui está o comando do artesão para limpar o cache do Laravel:

 php artisan cache:clear

Lembre-se de que este comando não excluirá nenhuma rota, configuração ou cache de exibição localizado na pasta /bootstrap/cache/.

5. Reduza o uso do pacote

Como um framework de código aberto com uma comunidade populosa, é natural ver mais e mais pacotes lançados ou novas versões em pacotes existentes no Laravel. Você é livre para usá-los e seus recursos diretamente em seu aplicativo.

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

No entanto, existem 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 aumenta e seu desempenho acaba sendo prejudicado. É por isso que é essencial revisar as dependências de perto antes de adicionar qualquer pacote.

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

Assim como qualquer outro código ou programa de software, é sempre melhor atualizar sua versão do PHP para a versão 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 prejudicado 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 antiga uma versão do PHP fica, mais lento fica seu desempenho. Para aumentar a eficiência, a versão atual do PHP possui excelentes melhorias de desempenho, como execução mais rápida de solicitações, enums, fibras e cache de herança.

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

7. Use filas

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 das informações na interface do usuário imediatamente. Nesse caso, essas tarefas podem ser adiadas e executadas posteriormente em segundo plano por um processo separado (por exemplo, enviando um e-mail). Isso pode aumentar significativamente o desempenho das solicitações online do seu aplicativo.

Exemplo de uso de filas para enviar e-mails (Fonte da imagem: GeekFlare)

O Laravel oferece suporte a uma variedade de drivers de fila, como IronMQ, Redis, Amazon SQS e Beanstalkd. Além disso, inclui um trabalhador de fila integrado que pode ser executado usando o seguinte comando:

 php artisan queue:work

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

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

Use o método abaixo via Carbon se quiser adiar a execução de um dos trabalhos enfileirados. Por exemplo, digamos que você queira agendar um trabalho que envie um email para um cliente 10 minutos depois que ele criar uma conta:

 $date = Carbon::now()->addMinutes(10); Queue::later($date, '[email protected]', array('message' => $message));

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

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

Lutando com problemas de tempo de inatividade e WordPress? Kinsta é a solução de hospedagem projetada para economizar seu tempo! Confira nossas funcionalidades

O Deployer é uma ferramenta de implantação baseada em PHP que permite implantar seu código em diferentes servidores. 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á com o Deployer rapidamente. Use essa ferramenta para automatizar todas as operações de implantação de sua máquina, como iniciar o servidor, clonar para um servidor remoto e monitorar um host remoto.

O Deployer tem 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 o Lumen para pequenos projetos

Há ocasiões em que o desenvolvimento de um pequeno aplicativo (por exemplo, aplicativos móveis ou Angular) não exige o uso de um framework full-stack como o Laravel. Nesse cenário, considere usar o Lumen em vez disso.

Lumen é um microframework desenvolvido pelo mesmo criador do Laravel. Como uma versão mais leve do Laravel, o Lumen tem tudo a ver com velocidade e desempenho para microsserviços. Requer configuração mínima e parâmetros de roteamento alternativos ao criar aplicativos da Web, permitindo um processo de desenvolvimento mais rápido.

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

10. Aproveite o compilador JIT

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

Este processo leva muito tempo e consome muitos recursos. É por isso que os programadores optam por mecanismos 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 desenvolvedores 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 para o Laravel. Etsy, Wikipedia e dezenas de outros sites também o usam.

11. Faça uso do carregamento ansioso

Para interagir com bancos de dados de forma agradável, o Laravel fornece um fantástico mapeador relacional de objetos (ORM) chamado Eloquent. Permite relacionar as tabelas e lidar com todas as funções CRUD em PHP em um formato simples.

Quando você recupera modelos de um banco de dados e, em seguida, executa qualquer tipo de processamento em suas relações, os dados do relacionamento são “carregados lentamente”. Isso significa que os dados não são carregados até que você acesse o relacionamento.

Você acabará executando consultas N+1 para encontrar sua resposta com carregamento lento, conforme 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, o Laravel pode “carregar ansiosamente” os dados conforme mostrado abaixo:

 $books = AppBook::with('author')->get(); foreach ($books as $book) { echo $book->author->name; }

12. Comprimir Imagens

As imagens desempenham um papel importante no design de um site. Eles são essenciais para melhorar a experiência do usuário (UX) e impulsionar as classificações 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 acabar perdendo muitos visitantes.

A compactação de imagem minimiza o tamanho de sua imagem original sem sacrificar sua qualidade, ajudando a otimizar a velocidade do site. Por esse motivo, o Laravel oferece opções interessantes para compactar fotos como TinyPNG, reSmush.it ou ImageMin.

13. Use um CDN

Usar 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 em que seus arquivos estão hospedados, os dados chegam ao seu público mais rapidamente.

Em outras palavras, ele armazena em cache 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 poderão acessar seu site rapidamente.

Kinsta CDN é desenvolvido pela Cloudflare e fornecido gratuitamente. Ele permite que os arquivos em cache do seu site sejam entregues de seu domínio primário em vez de um domínio CDN secundário, aumentando sua classificação de SEO.

Kinsta CDN também auxilia na remoção de componentes indesejados de seus arquivos JavaScript (JS) e CSS. Isso reduz muito o tempo que leva para carregar as páginas do seu site e reduz o consumo de largura de banda.

14. Minimize o código JS e CSS

Dê um chute para aumentar o desempenho do Laravel, minificando seus arquivos JavaScript e CSS antes de prosseguir com o processo de agrupamento de ativos.

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

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

15. Empregar Agrupamento de Ativos

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

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

Supondo que você precise de uma certa coleção de formatos de estilo para seu arquivo de aplicativo, você pode inserir algo assim:

 mix.styles([ 'public/css/vendor/normalize.css', 'public/css/styles.css' ], 'public/css/all.css');

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

Laravel Packer é uma ferramenta de linha de comando que pode ser instalada via Composer. Ele permite reduzir e agrupar seu código JS e CSS. No entanto, é mais difícil de usar do que o Laravel Mix.

Mesmo que essa dica seja ótima para aumentar o desempenho do Laravel, mesclar muitos arquivos o tornará enorme e, eventualmente, terá o efeito oposto. Para resolver esse problema, use o Laravel Mix para reduzir seus arquivos executando este comando:

 npm run prod

16. Limite de Bibliotecas Incluídas

O Laravel lhe dá a liberdade de adicionar quantas bibliotecas você quiser. Embora esse seja um recurso incrível, adicionar um monte de bibliotecas coloca muita pressão no desempenho do seu aplicativo. Também pode afetar toda a experiência do usuário.

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

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

17. Considere usar o New Relic

New Relic é uma ferramenta de gerenciamento de desempenho de aplicativos (APM) integrada por 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 Apdex e medir como seu aplicativo se compara aos concorrentes no mercado. Ele também permite que você crie políticas de alerta de acordo com seus critérios.

Se você não deseja se inscrever em um serviço de terceiros, pode usar a ferramenta APM da Kinsta. Ele pode ajudá-lo a encontrar gargalos de desempenho do PHP em seu site WP sem nenhum custo extra.
Confira esses truques para maximizar o desempenho do Laravel e prepare-se para o seu próximo projeto Click to Tweet

Resumo

Laravel é um framework PHP de 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, pode ter certeza de que, usando os métodos descritos acima, notará uma melhoria significativa no desempenho e poderá manter um aplicativo em execução suave.

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