Melhorar o desempenho da tela inicial, reduzindo os tempos de carregamento identificados no relatório Lighthouse e otimizando a renderização de conteúdo e imagens.
Contexto
A análise do Lighthouse apontou as seguintes áreas de melhoria:
Carregamento Lento do Maior Elemento de Conteúdo (LCP):
O tempo para carregar a imagem principal é de 7,1 segundos, afetando a métrica de Largest Contentful Paint.
Imagens estão sendo carregadas lentamente e não utilizam lazy loading ou formatos modernos como WebP.
Mudanças no Layout (CLS):
O Cumulative Layout Shift foi medido em 0,137, indicando que elementos da tela estão mudando durante o carregamento, prejudicando a experiência do usuário.
Recursos Não Otimizados:
Identificado CSS não usado (31 KiB) e JavaScript não usado (137 KiB).
Imagens sem tamanho adequado (55 KiB) e sem formatos modernos (52 KiB).
Recursos estáticos não possuem política de cache eficiente, resultando em 19 solicitações desnecessárias.
Encadeamento de Requisições e Bloqueios:
O encadeamento de 15 solicitações críticas impacta o tempo total de carregamento.
O uso de terceiros bloqueia a execução por 50 ms.
Carregamento de Dados Gradual:
A tela inicial exibe conteúdo de forma gradual, com dados e contadores carregados após a exibição inicial, aumentando o tempo de percepção do carregamento.
Soluções Esperadas
Otimização do Carregamento de Imagens:
Implementar lazy loading para imagens com placeholders.
Adotar formatos modernos (WebP) para reduzir o tamanho das imagens.
Definir tamanhos fixos para evitar mudanças no layout.
Consolidação de Recursos:
Reduzir CSS e JavaScript não utilizados.
Configurar cache eficiente para recursos estáticos.
Melhoria no Carregamento de Dados:
Consolidar consultas ao backend em um único endpoint para retornar todos os dados necessários de uma vez.
Garantir que os dados sejam pré-carregados antes da exibição da tela inicial.
Minimização do Encadeamento de Requisições:
Priorizar carregamento de recursos críticos acima da dobra (above the fold).
Revisar dependências de terceiros para reduzir bloqueios.
Passos para Implementação
Backend
Criar um endpoint consolidado que retorne:
Dados para os contadores (vias por bairro, grau e exposição).
URLs otimizadas para as imagens principais.
Adicionar suporte ao formato WebP no armazenamento de imagens.
Frontend
Atualizar o HomeService para usar o novo endpoint consolidado.
Implementar lazy loading para imagens usando a propriedade loading="lazy".
Ajustar a lógica de renderização para garantir que:
Os placeholders sejam exibidos até que os dados e imagens sejam carregados.
Elementos tenham tamanhos fixos para evitar mudanças no layout.
Substituir imagens por versões em WebP com fallback para PNG/JPEG.
Recursos Estáticos
Configurar cache de longo prazo para CSS, JavaScript e imagens.
Remover CSS e JavaScript não utilizados, minimizando os arquivos.
Critérios de Aceitação
First Contentful Paint (FCP) deve ser reduzido para menos de 2,0 segundos.
Largest Contentful Paint (LCP) deve ser reduzido para menos de 2,5 segundos.
Cumulative Layout Shift (CLS) deve ser menor que 0,1.
Os dados e imagens da tela inicial devem carregar simultaneamente com placeholders para os elementos ainda não carregados.
O uso de formatos modernos (WebP) deve reduzir o tamanho das imagens carregadas.
Etiquetas
🐛 fix: Resolver problemas de carregamento lento e inconsistências de layout.
♻️ refactor: Ajustar lógica de carregamento e renderização para maior eficiência.
⚡ perf: Melhorar o desempenho e reduzir tempos de carregamento.
Prioridade
Alta: Este problema impacta diretamente os indicadores de performance da aplicação e a experiência do usuário.
Notas Adicionais
Testar as alterações em dispositivos móveis e desktop usando Lighthouse para validar as melhorias.
Garantir que as alterações sejam compatíveis com o PWA.
🐛 Tela Inicial demora para carregar dados e fotos
Objetivo
Melhorar o desempenho da tela inicial, reduzindo os tempos de carregamento identificados no relatório Lighthouse e otimizando a renderização de conteúdo e imagens.
Contexto
A análise do Lighthouse apontou as seguintes áreas de melhoria:
Carregamento Lento do Maior Elemento de Conteúdo (LCP):
Mudanças no Layout (CLS):
Recursos Não Otimizados:
Encadeamento de Requisições e Bloqueios:
Carregamento de Dados Gradual:
Soluções Esperadas
Otimização do Carregamento de Imagens:
Consolidação de Recursos:
Melhoria no Carregamento de Dados:
Minimização do Encadeamento de Requisições:
Passos para Implementação
Backend
Frontend
HomeService
para usar o novo endpoint consolidado.loading="lazy"
.Recursos Estáticos
Critérios de Aceitação
Etiquetas
fix
: Resolver problemas de carregamento lento e inconsistências de layout.refactor
: Ajustar lógica de carregamento e renderização para maior eficiência.perf
: Melhorar o desempenho e reduzir tempos de carregamento.Prioridade
Notas Adicionais