APIs de desempenho na Web se tornam rapidamente recomendações do W3C

O Grupo de Trabalho de Performance na Web do W3C publicou recentemente três especificações como recomendações do W3C com implementações completas de todos os principais fornecedores de navegador, aumentando a capacidade dos desenvolvedores para medir com precisão o desempenho de aplicativos Web e tornar a Web mais rápida. Nos últimos três anos, empresas como a Microsoft, Google, Mozilla, Intel, Facebook e outras trabalham na padronização das interfaces de Navigation Timing, High Resolution Time e Page Visibility no Grupo de Trabalho. A rápida adoção dessas recomendações demonstra o que é possível quando o setor e a comunidade se juntam por meio do W3C.

Para tornar a Web mais rápida, os desenvolvedores precisam medir de forma precisa as características de desempenho de aplicativos Web e usar efetivamente o hardware subjacente para melhorar o desempenho de seus aplicativos. Para resolver esses problemas, o Grupo de Trabalho de Desempenho na Web criou 15 especificações diferentes que solucionam esses problemas. A tabela abaixo mostra o nível de maturidade de todas as especificações que estão sendo editadas atualmente pelo Grupo de Trabalho.

Especificação Rascunho do editor Primeiro rascunho de trabalho público Última videochamada Recomen. candidata Recomen. proposta Recomen.
Tempo de navegação Set 2010 Out 2010 Jan 2011 Mar 2011 Jul 2012 Dez 2012
Tempo de recurso Set 2010 Mai 2011 Ago 2011 Mai 2012
Tempo do usuário Out 2010 Ago 2011 Set 2011 Jul 2012
Linha do tempo do desempenho Jul 2011 Ago 2011 Set 2011 Jul 2012
Tempo de alta resolução Fev 2012 Mar 2012 Mar 2012 Mai 2012 Out 2012 Dez 2012
Visibilidade da página Abr 2011 Jun 2011 Jul 2011 Jul 2012 Fev 2013 Mai 2013
Exibir notificação de pintura Mai 2011 Jun 2011 Fev 2012
Tempo de navegação L2 (NOVO) Jan 2013 Jan 2013
Concessão de script eficiente Jun 2011
Tempo de alta resolução L2 (NOVO) Abr 2013
Beacon (NOVO) Mar 2013
Prioridades de recursos (NOVO) Abr 2013
Log de erro de navegação (NOVO) Abr 2013
Log de erro de recursos (NOVO) Abr 2013
Prerender (NOVO)

As especificações de Navigation Timing, Resource Timing, User Timing e Performance Timeline ajudam os desenvolvedores a medir com precisão o tempo de navegação do documento, a busca de recursos na página e a execução do script do desenvolvedor. Antes dessas APIs, esses dados não eram obtidos facilmente. O Tempo de navegação era publicado como uma recomendação do W3C, com suporte de todos os principais fornecedores de navegador. As outras três interfaces estão atualmente no estágio de Recomendação candidata aguardando duas implementações completas dos fornecedores de navegador. No momento, o IE10 é o único navegador que implementou todas essas interfaces, embora outros fornecedores estejam trabalhando nisso.

Para garantir que essas métricas de desempenho sejam medidas da forma mais precisa possível, a especificação de High Resolution Time permite que os desenvolvedores meçam operações com uma precisão de submilissegundos. Essa interface beneficia as medições precisas de métricas de desempenho e também permite um cálculo da taxa de quadros e uma sincronização de indicações de áudio e animação melhores. Essa interface foi publicada como uma recomendação do W3C, com todos os principais fornecedores de navegador implementando o método performance.now() definido na especificação.

A API de Page Visibility permite a determinação programática do estado de visibilidade atual da página. Os desenvolvedores podem usar esses dados para tomar decisões de CPU e de economia de energia melhores, por exemplo, diminuindo a atividade quando a página estiver na guia em segundo plano. Essa especificação também foi publicada como uma recomendação do W3C, com implementação de todos os principais fornecedores de navegador.

As especificações de Timing Control for Script-Based Animations e Efficient Script Yielding ajudam os desenvolvedores a escreverem mais aplicativos Web com CPU mais eficiente e menor consumo de energia. A API requestAnimationFrame, da especificação de Controle de tempo para animações baseadas em script, permite a criação de animações JavaScript mais eficientes. Todos os fornecedores de navegador têm suporte completo para essa interface, com o Grupo de Trabalho publicando ativamente essa especificação como uma Recomendação candidata. A API setImmediate, da especificação Concessão eficiente de script, permite que os desenvolvedores ofereçam um controle de fluxo eficiente para o agente de usuário e receba um retorno de chamada imediato, aproveitando CPU com eficiência. O IE10 é o primeiro navegador a implementar essa interface.

Este ano, o Grupo de Trabalho também começou a buscar novas ideias, com os rascunhos do editor dessas ideias atualmente sendo discutidos no Grupo de Trabalho. A API de Beacon tem como objetivo ajudar os scripts a transferirem assincronicamente os dados para um servidor Web sem bloquear o evento Descarregar, o que pode impactar de forma negativa o desempenho percebido da navegação seguinte. A API de Resource Priorities define um meio para que os desenvolvedores Web deem dicas ao navegador sobre a prioridade de download de recursos para ajudar a melhorar o tempo de carregamento da página. Como corolário das especificações de Tempo, as especificações de Navigation Error Logging e Resource Error Logging ajudam os desenvolvedores a conhecerem os erros e a disponibilidade dos aplicativos. A especificação de Navigation Timing Level L2 adiciona o suporte do Tempo de alta resolução e Tempo do desempenho ao Tempo de navegação, e a especificação de High Resolution Time L2 adiciona o suporte do Web Worker. Esses são apenas alguns dos rascunhos que o Grupo de Trabalho está definindo no momento, com mais rascunhos de especificação sobre o Prerender e outras áreas de diagnóstico disponíveis em breve.

O Grupo de Trabalho de Desempenho na Web do W3C é um ótimo exemplo de quão rapidamente novas ideias podem se tornar padrões interoperáveis em que os desenvolvedores podem se basear em navegadores modernos com HTML5 habilitado. Junto com os líderes do setor e da comunidade que participam do Grupo de Trabalho, esperamos continuar fazendo rápidos avanços nos padrões interoperáveis que ajudarão os desenvolvedores a tornar a Web mais rápida.

Obrigado,
Jatinder Mann
gerente de programas do Internet Explorer