Publicado em 20 de janeiro de 2025
No Chrome 133 (fevereiro de 2025), as guias em segundo plano que usam muita CPU serão congeladas quando o modo Economia de energia estiver ativo. O objetivo é reduzir o consumo de bateria para usuários que dependem do modo de economia de energia e para quem cada ponto percentual de duração da bateria é importante. Para minimizar a interrupção, apenas as guias em segundo plano que atendem a critérios específicos e apresentam alto uso da CPU serão congeladas.
O que é congelamento?
O congelamento suspende a execução de tarefas em uma página da Web. Isso inclui:
- Manipuladores de eventos (por exemplo, entrada, rede e sensor)
- Temporizadores
- Resolvedores de promise
O congelamento é diferente do descarte, em que uma guia é removida da memória. Quando uma guia congelada volta a ser focada, ela é descongelada automaticamente, e todas as tarefas em fila são executadas sem perda de estado.
Os eventos de congelamento e retomada são enviados quando uma página é congelada ou retomada. Consulte a documentação da API Page Lifecycle. Esses eventos permitem que a página libere recursos não utilizados, notifique um servidor de que a página está pausada ou registre métricas.
Quais páginas podem ser congeladas?
O congelamento vai operar em
grupos de contexto de navegação.
Normalmente, um grupo de contexto de navegação consiste em uma única guia. No entanto, várias
abas podem pertencer ao mesmo grupo ao usar APIs como window.open()
.
Com a Economia de energia ativada, um grupo de contexto de navegação será congelado se atender a estas condições:
- Todas as páginas do grupo estão ocultas e em silêncio há mais de cinco minutos.
- Qualquer subgrupo de frames de mesma origem no grupo tem "uso intensivo de CPU".
- O grupo não:
- Ofereça funcionalidade de conferência de áudio ou vídeo (detectada por microfone, câmera, captura de tela/janela/guia ou uma RTCPeerConnection com um RTCDataChannel "aberto" ou uma MediaStreamTrack "ao vivo").
- Controle um dispositivo externo (detectado usando Web USB, Web Bluetooth, Web HID ou Web Serial).
- Mantenha um bloqueio da Web ou uma conexão IndexedDB que bloqueia operações fora do grupo.
A definição de "uso intensivo de CPU" pode evoluir, mas a intenção é excluir clientes de e-mail ou chat implementados de forma eficiente ou aplicativos de calendário que geram notificações.
Congelar simultaneamente todas as guias no mesmo grupo de contexto de navegação minimiza a interrupção para apps que usam pop-ups, como os usados para escrever mensagens ou inserir credenciais.
Como posso preparar meu site?
Se o site não tiver funcionalidade em segundo plano (por exemplo, notificações, envio de arquivos ou atualização de conteúdo), provavelmente não será afetado pelo congelamento.
Se o site tiver funcionalidade em segundo plano, minimize o uso da CPU para evitar que ele seja considerado de uso intensivo de CPU e, portanto, congelado. Confira algumas dicas:
- Evite temporizadores para verificações periódicas de mudança de estado.
- Use o IntersectionObserver para detectar quando um elemento entra na viewport.
- Use ResizeObserver para detectar mudanças no tamanho do elemento.
- Use MutationObserver ou callbacks de ciclo de vida de elementos personalizados para mudanças no DOM.
- Considere usar sockets da Web, eventos enviados pelo servidor, mensagens de push ou fluxos de busca em vez de um servidor de pesquisa.
- Use eventos como timeupdate e ended para alterações de áudio ou vídeo.
Também recomendamos migrar a funcionalidade em segundo plano para um worker de serviço para que ele não seja afetado pelo congelamento. Além de não ser afetado pelo congelamento, um service worker exige menos recursos do navegador. Considere usar:
- API Push para notificações
- API Background Sync ou API Web Periodic Background Sync para buscar atualizações.
Os sites podem desativar o congelamento participando do teste de origem BackgroundPageFreezeOptOut. Esse teste será descontinuado quando novas APIs para declarar trabalhos em segundo plano importantes forem lançadas (por exemplo, a API Progress Notification).
Confira a qualificação de uma guia para congelamento em chrome://discards
. Mesmo que uma guia esteja qualificada para congelamento, o Chrome 133 só vai congelá-la se ela
exigir muita CPU e a Economia de energia estiver ativa.
A seguir
O congelamento de guias em segundo plano economiza energia, o que é crucial para usuários com a economia de energia ativada.
Ele também melhora o desempenho da guia em primeiro plano e ajuda a evitar a terminação da guia em segundo plano, especialmente em dispositivos com recursos limitados, reduzindo o uso da CPU e o acesso à memória. O Chrome vai expandir o congelamento de guias para mais situações. As mudanças serão anunciadas em blink-dev@chromium.org. Para fazer isso com mínima interrupção nos casos de uso em segundo plano, novas APIs, como a API Progress Notification, permitem que as páginas declarem trabalhos em segundo plano importantes e evitem congelamento.