"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Dicas para otimização de código e melhoria de desempenho no Laravel

Dicas para otimização de código e melhoria de desempenho no Laravel

Publicado em 2024-11-02
Navegar:150

Tips for Code Optimization and Performance Improvement in Laravel

Laravel é um framework robusto e elegante, mas conforme sua aplicação cresce, otimizar seu desempenho se torna essencial. Aqui está um guia completo com dicas e exemplos para ajudá-lo a melhorar o desempenho e otimizar seu aplicativo Laravel.

1. Carregamento ansioso versus carregamento lento

Problema: Por padrão, o Laravel usa carregamento lento, o que pode resultar no "problema de consulta N 1", onde múltiplas consultas ao banco de dados são disparadas desnecessariamente.

Otimização: use o carregamento rápido para carregar dados relacionados em uma consulta, melhorando significativamente o desempenho ao trabalhar com relacionamentos.

Antes (carregamento lento):

// This runs multiple queries (N 1 Problem)
$users = User::all();

foreach ($users as $user) {
    $posts = $user->posts;
}

Depois (carregamento ansioso):

// This loads users and their posts in just two queries
$users = User::with('posts')->get();

Principal conclusão: sempre use o carregamento antecipado quando souber que precisará de modelos relacionados.


2. Use cache para consultas caras

Problema: buscar frequentemente os mesmos dados (como listas de usuários, configurações ou catálogos de produtos) pode criar gargalos de desempenho.

Otimização: armazene em cache os resultados de consultas e cálculos caros para reduzir o tempo de carregamento e as consultas ao banco de dados.

Antes (sem cache):

// Querying the database every time
$users = User::all();

Depois (usando cache):

// Caching the user data for 60 minutes
$users = Cache::remember('users', 60, function () {
    return User::all();
});

Principal vantagem: Use o sistema de cache do Laravel (Redis, Memcached) para reduzir consultas desnecessárias ao banco de dados.


3. Otimize consultas de banco de dados

Problema: consultas ineficientes e falta de indexação adequada podem reduzir drasticamente o desempenho.

Otimização: sempre adicione índices às colunas consultadas com frequência e use apenas os dados necessários.

Antes:

// Fetching all columns (bad practice)
$orders = Order::all();

Depois:

// Only fetching necessary columns and applying conditions
$orders = Order::select('id', 'status', 'created_at')
    ->where('status', 'shipped')
    ->get();

Principal vantagem: Sempre especifique as colunas necessárias e certifique-se de que seu banco de dados tenha indexação adequada nos campos consultados com frequência.


4. Minimize o uso de middleware

Problema: Aplicar middleware globalmente a cada rota pode adicionar sobrecarga desnecessária.

Otimização: aplique middleware seletivamente apenas quando necessário.

Antes (uso global de middleware):

// Applying middleware to all routes
Route::middleware('logRouteAccess')->group(function () {
    Route::get('/profile', 'UserProfileController@show');
    Route::get('/settings', 'UserSettingsController@index');
});

Depois (uso seletivo de middleware):

// Apply middleware only to specific routes
Route::get('/profile', 'UserProfileController@show')->middleware('logRouteAccess');

Principal conclusão: O middleware só deve ser aplicado quando necessário para evitar impactos no desempenho.


5. Otimize a paginação para grandes conjuntos de dados

Problema: buscar e exibir grandes conjuntos de dados de uma só vez pode resultar em alto uso de memória e respostas lentas.

Otimização: use paginação para limitar o número de registros buscados por solicitação.

Antes (buscando todos os registros):

// Fetching all users (potentially too much data)
$users = User::all();

Depois (usando paginação):

// Fetching users in chunks of 10 records per page
$users = User::paginate(10);

Principal vantagem: Paginar grandes conjuntos de dados para evitar sobrecarregar o banco de dados e reduzir o uso de memória.


6. Enfileirar tarefas de longa duração

Problema: tarefas de longa duração, como envio de e-mails ou geração de relatórios, retardam o tempo de resposta à solicitação.

Otimização: use filas para descarregar tarefas e tratá-las de forma assíncrona em segundo plano.

Antes (Tarefa Síncrona):

// Sending email directly (slows down response)
Mail::to($user->email)->send(new OrderShipped($order));

Depois (tarefa na fila):

// Queuing the email for background processing
Mail::to($user->email)->queue(new OrderShipped($order));

Principal vantagem: Use filas para tarefas que não são sensíveis ao tempo para melhorar os tempos de resposta.


7. Use Route, Config e View Caching

Problema: não armazenar rotas, configurações ou visualizações em cache pode levar a um desempenho mais lento, especialmente em ambientes de produção.

Otimização: cache de rotas, arquivos de configuração e visualizações para desempenho mais rápido na produção.

Comandos de exemplo:

# Cache routes
php artisan route:cache

# Cache configuration files
php artisan config:cache

# Cache compiled views
php artisan view:cache

Principal vantagem: sempre armazene em cache suas configurações, rotas e visualizações na produção para obter um desempenho mais rápido do aplicativo.


8. Use compact() para limpar o código

Problema: passar manualmente múltiplas variáveis ​​para visualizações pode resultar em código detalhado e difícil de gerenciar.

Otimização: Use compact() para simplificar o processo de passagem de múltiplas variáveis ​​para uma visualização.

Antes:

return view('profile', [
    'user' => $user,
    'posts' => $posts,
    'comments' => $comments,
]);

Depois:

return view('profile', compact('user', 'posts', 'comments'));

Principal conclusão: usar compact() torna seu código mais conciso e mais fácil de manter.


9. Use Redis ou Memcached para armazenamento de sessão e cache

Problema: armazenar sessões e dados de cache no sistema de arquivos torna seu aplicativo mais lento em ambientes de alto tráfego.

Otimização: use soluções rápidas de armazenamento na memória, como Redis ou Memcached para melhor desempenho.

Exemplo de configuração para Redis:

// In config/cache.php
'default' => env('CACHE_DRIVER', 'redis'),

// In config/session.php
'driver' => env('SESSION_DRIVER', 'redis'),

Principal vantagem: Evite usar o driver de arquivo para sessões e armazenamento em cache na produção, especialmente em aplicativos de alto tráfego.


10. Evite usar consultas brutas, a menos que seja necessário

Problema: usar consultas SQL brutas pode tornar seu código menos legível e mais difícil de manter.

Otimização: Use o Eloquent ORM ou Query Builder do Laravel sempre que possível, mas se consultas brutas forem necessárias, certifique-se de que estejam otimizadas.

Antes (consulta bruta):

// Using raw query directly
$users = DB::select('SELECT * FROM users WHERE status = ?', ['active']);

Depois (usando Eloquent ou Query Builder):

// Using Eloquent ORM for better readability and maintainability
$users = User::where('status', 'active')->get();

Principal conclusão: Prefira o Eloquent ORM em vez de consultas brutas, a menos que seja absolutamente necessário.


11. Use níveis de registro eficientes

Problema: registrar tudo o tempo todo pode causar degradação do desempenho e encher seu armazenamento.

Otimização: defina níveis de log adequados na produção para capturar apenas o que é necessário (por exemplo, erros e mensagens críticas).

Exemplo:

// In .env file, set log level to 'error' in production
LOG_LEVEL=error

Principal conclusão: registre apenas o que é necessário na produção para evitar uso desnecessário de armazenamento e impactos de desempenho.


Considerações Finais

Otimizar o desempenho do Laravel é crucial para aplicações escalonáveis ​​e eficientes. Ao implementar essas práticas recomendadas, você pode garantir que seu aplicativo Laravel seja executado mais rapidamente, lide com mais tráfego e ofereça uma melhor experiência ao usuário.

Diga-me o que você pensa ou sinta-se à vontade para compartilhar suas próprias dicas e truques para otimizar aplicativos Laravel!

Boa codificação! ?

Declaração de lançamento Este artigo foi reproduzido em: https://dev.to/harish_kumars_9c58df6fcc/10-tips-for-code-optimization-and-performance-improvement-in-laravel-1e99?1 Se houver alguma violação, entre em contato com study_golang@163 .com para excluí-lo
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3