Padrões de temas
Crie sistemas de cores adaptáveis para facilitar a orquestração das preferências do usuário para elementos como claros ou escuros.
- Tempo total de bloqueio (TBT)
- Web Vitals
- As maneiras mais eficazes de melhorar as Core Web Vitals
- Primeiros passos com a medição das Métricas da Web
- Comparar o recurso de LLM com o resumo
- Como os limites das Core Web Vitals foram definidos
- Diagnosticar manualmente as interações lentas no laboratório
- Otimizar a Maior exibição de conteúdo
- Fluxos de trabalho das Principais métricas da Web com ferramentas do Google
- Referência
- Cache de avanço e retorno
- First Input Delay (FID)
- Depurar o desempenho no campo
- Melhore a performance e a UX da IA do lado do cliente
- Comparativo de mercado da performance da @property do CSS
- Correlação das Core Web Vitals e receita de publicidade com as ferramentas do Google
- É hora de carregar lentamente iframes fora da tela.
- Armazenamento para a Web
- O protocolo de push na Web
- Como criar vários Progressive Web Apps no mesmo domínio
- Como o Chrome lida com as atualizações no manifesto do app da Web
- O que é necessário para a instalação?
- Quais são as características de um bom Progressive Web App?
- Adicionar um manifesto de app da Web
- Reduza o scripting em vários locais (XSS) com uma Política de Segurança de Conteúdo (CSP) rígida
- Como acessar dispositivos de hardware na web
- Permitir a reutilização da chave de acesso nos seus sites com solicitações de origem relacionadas
- Carregamento lento de imagens no navegador para a Web
- Escolha o formato de imagem correto
- Métricas personalizadas
- Meça e depure a performance com o Google Analytics 4 e o BigQuery
- Práticas recomendadas de permissões da Web
- Práticas recomendadas para avisos de cookies
- Personalize notificações de mídia e controles de mídia com a API Media Session
- Encontrar interações lentas no campo
- Como usar o tabindex
- Tempo até o primeiro byte (TTFB)
- Engenharia de comandos prática para LLMs menores
- Otimizar tarefas longas
- Otimizar o tempo para o primeiro byte
- Interação com Próxima Exibição (INP)
- Cores dependentes do esquema de cores CSS com light-dark()
- Padrões de desempenho do WebAssembly para apps da Web
- Layouts de grade animada em CSS
- Curta o jogo do dinossauro do Chrome com seu gamepad
- O atributo inert
- Ética e IA
- O que é inteligência artificial?
- Upgrade da pesquisa no site: respostas contextuais com a IA generativa
- Conheça a equipe de IA do Web.dev
- Determinar o provedor da chave de acesso com o AAGUID
- Como compilar e otimizar o Wasm com Binaryen
- Captura de áudio e vídeo em HTML5
- O componente da Web <model-viewer>
- Análise detalhada de userverification
- Por que os dados do CrUX são diferentes dos meus dados do RUM?
- Acessibilidade para desenvolvedores da Web
- Largest Contentful Paint (LCP)
- Carregar JavaScript de terceiros
- Impedir a criação de uma nova chave de acesso, se já houver uma
- Trabalhar com IndexedDB
- 5 snippets de CSS que todos os desenvolvedores front-end precisam saber em 2024
- Quais são as partes de um URL?
- Análise detalhada das credenciais detectáveis
- Desempenho de renderização
- ResizeObserver: é como document.onresize para elementos.
- Otimizar a codificação e o tamanho da transferência de recursos baseados em texto
- OffscreenCanvas: agilize suas operações com um web worker
- Pré-carregar módulos
- First Contentful Paint (FCP)
- Redes de fornecimento de conteúdo (CDNs)
- O que resulta em uma boa experiência de logout?
- Tempo para interação da página (TTI)
- Otimizar o carregamento de recursos com a API Fetch Preview
- As pseudoclasses :user-valid e :user-invalid
- Otimizar as Core Web Vitals para os tomadores de decisão de negócios
- As nuances das strings de codificação base64 no JavaScript
- Subgrade CSS
- Carregar anúncios com eficiência sem afetar a velocidade da página
- Quatro tipos comuns de cobertura de código
- Testar ou não: do ponto de vista técnico
- Como definir casos de teste e prioridades
- Métricas de performance centradas no usuário
- Pré-carregar imagens responsivas
- Como adaptar a tipografia às preferências do usuário com CSS
- Pirâmide ou caranguejo? Encontre uma estratégia de teste adequada
- Três tipos comuns de automação de testes
- Eliminar downloads desnecessários
- O que é o WebAssembly e de onde ele veio?
- Como compilar mkbitmap para WebAssembly
- Hospede com segurança dados do usuário em aplicativos da Web modernos
- O sistema de arquivos privados de origem
- Como implantar o AVIF em sites mais responsivos
- Otimizar a interação com a próxima exibição
- Recursos de referência que você pode usar hoje
- Otimizar atraso de entrada
- Como tamanhos grandes de DOM afetam a interatividade e o que você pode fazer a respeito
- Avaliação de script e tarefas longas
- Renderização de HTML e interatividade do lado do cliente
- Como usar a extensão Métricas da Web para depurar problemas nas Principais métricas da Web
- Otimizar a Mudança de layout cumulativa
- Cumulative Layout Shift (CLS)
- Crie experiências do WordPress no navegador com o WordPress Playground e o WebAssembly
- Nova funcionalidade para desenvolvedores oferecida pelo WebAssembly
- PWAs em app stores
- O que são os mapas de origem?
- 6 snippets de CSS que todos os desenvolvedores front-end precisam conhecer em 2023
- Funções trigonométricas no CSS
- Realizar operações eficientes por frame de vídeo em vídeo com requestVideoFrameCallback()
- Destaques da comunidade do GDE: Lars Knudsen
- Dica rápida de CSS! Texto em gradiente animado
- Novos padrões para apps de música
- Criando o Chrometober!
- Como criar um componente de dica
- Fazer login com uma chave de acesso usando o preenchimento automático de formulários
- Criar uma chave de acesso para logins sem senha
- Como criar um componente de botão de ação flutuante (FAB)
- Práticas recomendadas para fontes
- Dica rápida de CSS! Carregador animado
- Destaque da comunidade do GDE: Alba Silvente Fuentes
- Como testar o contraste de cores do Web design
- Criar a navegação principal de um site
- É :modal?
- Práticas recomendadas para tags e gerenciadores de tags
- Estilo da lista de criativos
- Como criar uma ilusão de grade torta
- Como a Nordhealth usa propriedades personalizadas em Web Components
- Controle mais refinado sobre transformações CSS com propriedades de transformação individuais
- Animações de borda CSS
- Como a BBC está lançando o HSTS e melhorias na segurança e no desempenho.
- Por que os dados de laboratório e de campo podem ser diferentes e o que fazer a respeito
- Todos saem ganhando
- O fim do Internet Explorer
- Adeus ao HTML5Rocks
- Receitas de cookies primários
- Sincronizar reprodução de áudio e vídeo na Web
- Usar gradientes cônicos para criar uma borda fria
- Escolher um framework ou uma biblioteca JavaScript
- Implementar o tratamento de erros ao usar a API Fetch
- A diferença entre bibliotecas e frameworks JavaScript
- Guia do desenvolvedor de front-end para o terminal
- Uma API para fontes da Web bonitas e rápidas
- GOV.UK remove o jQuery do front-end.
- Como criar um componente de botão
- Não combater o scanner de pré-carregamento do navegador
- Práticas recomendadas para medir as Métricas da Web no campo
- Minimizar a distância
- Encontrar coragem e inspiração na comunidade de desenvolvedores
- Fontes variáveis na vida real
- Crie gradientes CSS rapidamente com o CSS Gradient Creator
- Análise detalhada dos principais pontos problemáticos do desenvolvedor da Web
- Melhore a imagem do seu site com images.tooling.report
- Escopo de variáveis globais e locais
- Como criar um componente de caixa de diálogo
- Depurar erros de reprodução de mídia na Web
- Destaque da comunidade do GDE: Nishu Goel
- Os efeitos de desempenho do carregamento lento em excesso
- Como criar um componente da barra de carregamento
- Salvar credenciais de formulários
- Chrome e Firefox em breve para alcançar a versão principal 100
- Como criar um favicon adaptável
- Desenho em tela em Emscripten
- Melhore a segurança e a privacidade atualizando o cache HTTP
- Elementos HTML adicionais
- Portabilidade de aplicativos USB para a Web. Parte 2: gPhoto2
- Registro de erros de rede (NEL, na sigla em inglês)
- Detecção de recursos do WebAssembly
- Portabilidade de aplicativos USB para a Web. Parte 1: libusb
- Como criar um componente de mudança de tema
- Como incorporar snippets de JavaScript em C++ com Emscripten
- PWAs no Oculus Quest 2
- Design de edifícios
- Calculadora Designcember
- Como fazer cópia profunda em JavaScript usando oStructuredClone
- Como criar um componente de aviso
- O fundo da interface
- Como criar um componente de menu de jogo 3D
- Tudo do anúncio na Conferência de Desenvolvedores Chrome 2021
- Fluxos de usuários do Lighthouse
- Novidades do PageSpeed Insights
- Em relação a uma métrica de suavidade da animação
- A jornada do Photoshop para a web
- Como criar um componente de seleção múltipla
- Como avaliar o desempenho de carregamento no campo com a Navigation Timing e a Resource Timing
- Manipulação segura do DOM com a API Sanitizer
- Práticas recomendadas para o uso de incorporações de terceiros
- Como as arquiteturas de SPA afetam as Principais métricas da Web
- Detalhamento do evento JavaScript
- Como agrupar recursos que não são JavaScript
- Como criar um componente de botão de divisão
- Como usar scripts de módulo CSS para importar folhas de estilo
- Cor de destaque do CSS
- Como criar um componente de switch
- Cabeçalhos de dicas do cliente de recursos de mídia de preferências do usuário
- Como criar um componente de navegação estrutural
- Como usar linhas de execução WebAssembly do C, C++ e Rust
- Noções básicas de streaming de mídia
- Criptografia de mídia
- Frameworks de mídia
- PWA com streaming off-line
- Saiba como usar os dados dos campos na atualização da extensão das Métricas da Web
- Ajuste de tamanho do CSS para @font-face
- Como criar um esquema de cores
- Como usar o AVIF para compactar imagens no site
- CSS para Métricas da Web
- Novos seletores funcionais de pseudoclasse CSS :is() e :where()
- O novo treinamento do Progressive Web App já está disponível
- Migrar para as dicas de cliente do user agent
- Referência rápida sobre cabeçalhos de segurança
- Excalidraw e Fugu: como melhorar as principais jornadas do usuário
- Módulos ES em service workers
- Como criar um componente de rolagem de mídia
- Como otimizar as Métricas da Web usando o Lighthouse
- Como usar APIs Web assíncronas do WebAssembly
- Como manter scripts de terceiros sob controle
- Personalize a sobreposição dos controles de janela da barra de título do PWA
- Quebra de barreiras com a API DataTransfer
- Preencher formulários OTP em iframes de origem cruzada com a API WebOTP
- Como criar animações de texto dividido
- Satisfação do desenvolvedor da Web
- Como criar um componente Configurações
- Depurar mudanças de layout
- JavaScript: o que isso significa?
- Como programar o mini app
- Marcação, estilo, script e atualização de mini apps
- Estrutura, ciclo de vida e pacotes do projeto
- Como aplicar os princípios de programação do miniapp a um projeto de exemplo
- Componentes de mini app
- Projetos de código aberto de mini apps
- O que são H5 e QuickApp?
- Considerações finais sobre miniapps de um desenvolvedor da Web
- Streams: o guia definitivo
- Como criar um componente de guias
- Um guia para ativar o isolamento de origem cruzada
- Como solicitar o isolamento de desempenho com o cabeçalho Origin-Agent-Cluster
- A propriedade aspect-ratio do CSS
- Práticas recomendadas para carrosséis
- WebRTC agora é um padrão W3C e IETF
- Usar HTTPS para desenvolvimento local
- Feedback necessário: o caminho para uma melhor métrica de troca de layout para páginas de longa duração
- Quando usar HTTPS para desenvolvimento local
- Codelab: como criar um componente de navegação lateral
- Como criar um componente de navegação lateral
- Centralização no CSS
- Codelab: Centralização no CSS
- Amo seu cache ❤️
- Publique, envie e instale o JavaScript moderno para aplicativos mais rápidos
- Worklets de pintura entre navegadores e Houdini.how
- Codelab de práticas recomendadas para o formulário de endereço
- Codelab de práticas recomendadas para formulários de pagamento
- Práticas recomendadas para formulários de OTP por SMS
- Como automatizar auditorias com o AutoWebPerf
- Práticas recomendadas para o formulário de inscrição
- Codelab de práticas recomendadas para formulários de inscrição
- Práticas recomendadas para formulários de pagamento e endereço
- Transmitir atualizações para páginas com os service workers
- Guia de armazenamento em cache imperativo
- Visão geral dos workers
- Comunicação bidirecional com service workers
- Desative a aceleração do mouse para melhorar a experiência de jogo com QPS
- Codelab: como criar um componente de Histórias
- Como criar um componente de histórias
- Carregamento lento no nível do navegador para CMSs
- Schemeful Same-Site
- Codelab: criar um servidor de notificações push
- Codelab: criar um cliente de notificação push
- Visão geral das notificações push
- Medir o uso off-line
- Exemplos de animações CSS de alto desempenho
- CSS min(), max() e clamp()
- Trocas assinadas (SXGs)
- Melhorias lógicas de layout com abreviações relativas ao fluxo
- Por que algumas animações estão lentas?
- Como criar animações CSS de alto desempenho
- Como processar solicitações de intervalo em um service worker
- Controlar o movimento, a inclinação e o zoom da câmera
- O que são testes de origem de terceiros?
- Vazamentos de memória da janela removida
- Criar uma página substituta off-line
- Core Web Vitals
- Aplicar efeitos a imagens com a propriedade mask-image do CSS
- Crie formas de imagens interessantes com a propriedade clip-path do CSS's
- Marcadores personalizados com CSS ::marker
- Ajude os usuários a mudar a senha com facilidade adicionando um URL conhecido para isso
- Como orquestrar transações de pagamento com um service worker
- Como lidar com informações de pagamento opcionais com um service worker
- Acessibilidade de mídia
- ARIA: veneno ou antídoto?
- Como depurar vazamentos de memória no WebAssembly usando o Emscripten
- content-visibilidade: a nova propriedade de CSS que melhora o desempenho de renderização
- Desbloqueando o acesso à área de transferência
- Práticas recomendadas para referências e políticas de referenciadores
- Web no Android
- Como criar um PWA no Google, parte 1
- Monitoramento de desempenho com o Lighthouse CI
- Projetar a experiência do usuário com chaves de acesso nas Contas do Google
- @property: como atribuir superpoderes às variáveis CSS
- Relação da velocidade do site e das métricas de negócios
- Como registrar um app de pagamento baseado na Web
- Visão geral dos apps de pagamento baseados na Web
- Armazenamento em cache de service worker e armazenamento em cache HTTP
- Como fornecer dados de contato e de envio de um app de pagamento para Android
- Como processar solicitações de navegação
- Usar o Relatório de UX do Chrome para analisar o desempenho no campo
- Renderização perfeita com devicePixelContentBox
- Dez layouts modernos em uma linha de CSS
- Encerramento do web.dev AO VIVO
- Práticas recomendadas para formulários de login
- Aprimorar progressivamente seu Progressive Web App
- Use os recursos do navegador em várias plataformas para criar um formulário de login
- Ferramentas para desenvolvedores da Web para depurar problemas de JavaScript na Pesquisa Google
- Como criar experiências de pesquisa resilientes com o Workbox
- Adicionar mídia a uma página da Web
- Link em negrito onde ninguém havia vinculado antes: fragmentos de texto
- Deixe o PWA mais parecido com um app
- Como registrar um bom bug do navegador
- Medir o desempenho com o modelo RAIL
- Acelerar as navegações no React com o Quicklink
- Proteja seus recursos contra ataques na Web com a busca de metadados
- Reordenação de conteúdo
- Melhorias na API Web Animations no Chromium 84
- Como configurar uma forma de pagamento
- Guia para desenvolvedores de apps de pagamento do Android
- Capacitação de apps de pagamento com o Web Payments
- O ciclo de uma transação de pagamento
- Mais opções de fontes variáveis para a fonte da IU do sistema macOS no Chromium 83
- Realize tarefas rapidamente com os atalhos de apps
- Como os Progressive Web Apps podem impulsionar o sucesso dos negócios
- Preparação para a remoção do AppCache
- Armazenamento persistente
- Como definir sua estratégia de instalação
- Como a CommonJS está aumentando seus pacotes
- Por que você precisa do "isolamento de origem cruzada" para recursos avançados
- Como criar perfis de apps de áudio da Web no Chrome
- Melhoria no desempenho do carregamento de páginas do Next.js e do Gatsby com agrupamento granular
- "Mesmo site" e "mesma origem"
- Como tornar seu site "isolado de origem cruzada" usando COOP e COEP
- Monitorar o uso total da memória da sua página da Web com medidaUserAgentSpecificMemory()
- Blog de engenharia web.dev no 1: como criamos o site e usamos componentes da Web
- Melhoria no estilo padrão do modo escuro com a propriedade CSS do esquema de cores e a metatag correspondente
- Confira se o site está disponível e pode ser usado por todas as pessoas durante a pandemia da COVID-19
- Design responsivo acessível
- Áreas de toque acessíveis
- Corrigir um servidor sobrecarregado
- Acessibilidade de cor e contraste
- Evite vulnerabilidades de scripting em vários locais baseado em DOM com os Tipos confiáveis
- Como usar um PWA no seu app Android
- Evite a mudança de layout e o flash de texto invisível (FOIT, na sigla em inglês) pré-carregando fontes opcionais
- Como configurar Signed HTTP Exchanges (SXG) usando nginx
- Como distribuir Signed HTTP Exchanges (SXG) usando nginx
- Otimizar imagens de plano de fundo CSS com consultas de mídia
- Correção da velocidade do site de modo multifuncional
- Ajuste de rolagem após mudanças de layout
- Como configurar trocas assinadas usando o Web Packager
- Como oferecer sua própria experiência de instalação no app
- Posicionar objetos virtuais em visualizações do mundo real
- A realidade virtual chega à Web, parte II
- Realidade aumentada: você talvez já saiba
- Como desenvolver o ecossistema de framework da Web
- O que são Progressive Web Apps?
- Compatibilidade com ícones adaptativos em PWAs com ícones mascaráveis
- Integrar PWAs a IUs de compartilhamento integradas com o Workbox
- Melhorias na dispensa de páginas em XMLHttpRequest() síncrono
- Como criar linhas de execução na Web com workers do módulo
- Carregamento adaptável: como melhorar o desempenho da Web em dispositivos lentos
- Evoluções das ferramentas de velocidade: destaques da Conferência de Desenvolvedores do Chrome 2019
- Use web workers para executar JavaScript fora da thread principal do navegador
- Feedback da pesquisa de otimização de imagens de 2019
- Criar um servidor de notificações push
- Pré-busca de rotas no Next.js
- Integrar a IU de compartilhamento do SO usando a API Web Share
- Divisão de código com importações dinâmicas no Next.js
- Desempenho como padrão com o Next.js
- Como o AMP pode garantir a rapidez no app Next.js
- A realidade virtual chega à Web
- Compreensão dos cookies
- Receitas de cookies SameSite
- Anúncios rápidos são importantes
- Usar notificações push para engajar e reengajar usuários
- Começar a usar a API Notifications
- Usar um service worker para gerenciar notificações
- Corrigir instabilidade de layout
- Técnicas para carregar um app da Web rapidamente, mesmo em um celular comum
- Propriedades personalizadas mais inteligentes com a nova API da Houdini
- Buscar recursos para acelerar navegações futuras
- Duas formas de pré-busca: tags <link> e cabeçalhos HTTP
- O que é conteúdo misto?
- Corrigir conteúdo misto
- Vá além das imagens com vídeos básicos para a Web
- Adicionar um ícone de toque da Apple ao seu Progressive Web App
- Player pronto para a Web
- Progressive Web Apps em sites de várias origens
- Otimizar o carregamento e a renderização de WebFont
- Reduzir o tamanho da fonte na Web
- Criar um Progressive Web App com a CLI Angular
- Carregar JavaScript de terceiros com eficiência
- Identificar JavaScript de terceiros lento
- Usar CDNs de imagens para otimizar imagens
- Desempenho de JavaScript de terceiros
- Controles de formulário mais eficientes
- Otimizar o JavaScript de terceiros
- Estabeleça conexões de rede cedo para melhorar a velocidade percebida da página
- Crie planos de fundo no estilo do SO com filtro de pano de fundo
- Como manter tudo atualizado com o método desatualizado-while-revalidate
- Virtualizar listas grandes com o CDK do Angular
- Otimizar a detecção de alterações do Angular's
- Estratégias de pré-carregamento de rotas no Angular
- Navegação na Web mais rápida com pré-busca preditiva
- Adapte o vídeo à veiculação de imagens com base na qualidade da rede
- Auditar a acessibilidade do seu app Angular com o codelyzer
- Orçamentos de desempenho com a CLI Angular
- Pré-armazenamento em cache com o service worker do Angular
- prefere-color-scheme: Olá, escuridão, meu velho amigo
- Comece agora: otimizar um aplicativo do Angular
- Divisão de código no nível da rota no Angular
- Principais dicas sobre desempenho na Web
- Componentes da Web: o ingrediente secreto que ajuda a alimentar a Web
- Usar o Lighthouse para orçamentos de performance
- Atualizações nas APIs Web Payments
- O valor da velocidade
- Instalação da barra de endereço para Progressive Web Apps no computador
- Como a performance pode melhorar a conversão?
- Padrões para promover a instalação do PWA
- Mentalidade de service worker
- Como notifico os usuários de que meu PWA pode ser instalado?
- Políticas de imagem para carregamento rápido e muito mais
- As tarefas longas de JavaScript estão atrasando o tempo para interação da página?
- Extrair CSS crítico
- Extraia e insira CSS crítico inline com código
- Velocidade em escala: o que há de novo no desempenho na Web?
- Conheça o PROXX
- Explicação sobre cookies SameSite
- Pesquisa visual com o Web Perception Toolkit
- Experiência ativa com portais: navegação perfeita na Web
- Veiculação adaptável com base na qualidade da rede
- Minifique e compacte payloads de rede com o brotli
- web.dev no I/O 2019
- Como medir a velocidade?
- Como permanecer rápido?
- O que é velocidade?
- Auditoria de acessibilidade com o reação-axe e o eslint-plugin-jsx-a11y
- Como começar: otimizar seu app React
- Divisão de código com React.Lazy e Suspense
- Pré-armazenamento em cache no app Create React com o Workbox
- Virtualize listas grandes com uma janela de reação
- Pré-renderizar rotas com o React-snap
- Adicionar um manifesto de app da Web com o app Create React
- Codelab: pré-carregue recursos essenciais para melhorar a velocidade de carregamento
- prefere-redução-movimento: às vezes, menos movimento é mais
- Adiar CSS não essencial
- Confiança é boa, observação é melhor: Intersection Observer v2
- Fundamentos do Web design responsivo
- Folhas de estilo construíveis
- Renderização na Web
- Incorporar orçamentos de performance no processo de criação
- Como usar o bundlesize com o Travis CI
- Como definir orçamentos de desempenho com o webpack
- Como usar o bot do Lighthouse para definir um orçamento de performance
- Emscripten e npm
- Seu app está instalado? getinstaladoRelatedApps() vai avisar você!
- Exibir códigos modernos em navegadores modernos para acelerar o carregamento de página
- Como adaptar aos usuários com dicas do cliente
- O que é acessibilidade?
- Usar HTML semântico para facilitar o ganho de teclado
- Controlar o foco com o tabindex
- Rótulos e alternativas de texto
- Semântica e leitores de tela
- Foco de estilo
- Títulos e pontos de referência
- Conceitos básicos do acesso ao teclado
- Usar o Imagemin para compactar imagens
- Como configurar o comportamento de armazenamento em cache HTTP
- Identificar os recursos carregados da rede
- Política de mesma origem
- Evite flash de texto invisível
- Mesma política de origem e solicitações de busca
- Veicular imagens com dimensões corretas
- Orçamentos de performance 101
- O que são ataques de segurança?
- Seu primeiro orçamento de performance
- Pré-armazenamento em cache com o Workbox
- Reduzir payloads de JavaScript com a divisão de código
- Como criar imagens WebP com a linha de comando
- Pré-carregue recursos essenciais para melhorar a velocidade de carregamento
- Substitua GIFs animados por vídeos para acelerar o carregamento da página
- Remover código não utilizado
- Tornar o app instalável
- Compartilhamento de recursos entre origens (CORS, na sigla em inglês)
- Corrigir erros 404 não autorizados
- Como medir a otimização de mecanismos de pesquisa com o Lighthouse
- Usar imagens WebP
- Service workers e a API Cache Storage
- Substituir GIFs por vídeo
- Remover código não utilizado
- Sandbox do navegador
- Descubra oportunidades de performance com o Lighthouse
- Como funciona a pesquisa
- Veicular imagens com dimensões corretas
- Como trabalhar com service workers
- Exibir imagens responsivas