Nestes slides apresento algumas técnicas utilizadas para deixar aplicações Laravel mais rápidas. Muitas destas técnicas precisam ser utilizadas com cuidado.
Existem alguns trechos de código inspirados na palestra de cache do Zizaco
2. Sobre mim
danilopinotti@hotmail.com
Dracena/SP;
Tecnólogo em Sistemas para
Internet (UTFPR - Guarapuava,
2017);
Ex-estagiário na área de redes e de
administração de sistemas (UTFPR,
2015-2017);
Administrador de sistemas na
Faculdade Guarapuava (2017);
Desenvolvedor WEB na empresa
Let’s Sistemas (atualmente).
5. Introdução
- Sistemas lentos de acordo com o desenvolvimento e utilização
- Falta de preocupação nos estágios iniciais do desenvolvimento;
- Prazo de entrega muitas vezes força a despriorização de tempo investido em
otimizações;
- Avaliar real necessidade de se preocupar com otimizações de acordo com o
projeto.
12. Eager Loading (carregamento ansioso)
- O padrão de carregamento é o “Lazy Loading”;
- “Lazy Loading” gera um problema na quantidade de consultas no DB (N+1);
- O Eager Loading faz com que as buscas para o carregamento dos
relacionamentos seja unificada.
15. Utilize collections
Em algumas situações, o processamento de informações dentro de uma
collection pode ser mais rápido do que fazer várias consultas no banco de dados,
principalmente quando já estão carregadas em memória.
16. Utilize collections
Nem tudo é um mar de rosas. Mesmo tendo a latência do DB, quando a
quantidade de informações é muito grande ou a consulta é muito criteriosa, as
collections deixam a desejar.
É importante testar as possibilidades. Abaixo foi realizado um filtro em
aproximadamente 26.000 registros. Compare o desempenho:
17. Utilize collections
É importante ler a documentação.
Existem métodos que trazem o retorno mais
rápido de acordo com a situação.
● firstWhere() > where()->first()
● isNotEmpty() = count()
● contains() > where()->isNotEmpty()
19. Cache
- Reutilização de algo que já foi processado em um momento anterior sem ter
que processar novamente;
- Velocidade na resposta;
- Economia de recursos.
- Pode fazer cache de praticamente tudo;
- Redis, OPCache, memória, arquivos, etc.
26. Cache no Laravel
- Chave de ativação/desativação de cache;
- Muita atenção para a criação da chave de cache e com a lógica que a torna
obsoleta;
- Fazer testes para ver se compensa ou não fazer o cache.
27. Carregamento em memória
- Em algumas situações pode acontecer de você precisar duas vezes de uma
mesma informação que está em uma parte isolada do sistema.
- Exemplo: permissões, usuário corrente, etc.
- Para evitar carregar duas ou mais vezes a informação, você pode armazenar em
memória e tornar ela global para a aplicação.