Navigation Timing API

A API Navigation Timing fornece dados que podem ser usadospara medir a performance de um website. Diferente de outros mecanismos baseado em Javascript que já foram usados para o mesmo proposito, esta API pode fornecer dados sobre a latência do começo ao fim que podem ser mais precisas e relevantes.

O exemplo a seguir mostra como você pode medir o tempo de carregamento percebido:

function onLoad() { 
  var now = new Date().getTime();
  var page_load_time = now - performance.timing.navigationStart;
  console.log("Tempo de carregamento percebido pelo usuário: " + page_load_time);
}

Existem muitos eventos medidos em milisegundos que podem ser acessados através da interface PerformanceTiming. A lista de eventos na ordem em que ocorrem são:

O objeto window.performance.navigation guarda dois atributos que podem ser usados para saber se o carregamento da página é iniciada por um redirecionamento, pelo botão voltar/avançar ou pela URL mesmo.

window.performance.navigation.type:

ConstanteValorDescrição
TYPE_NAVIGATENEXT0Navegação iniciada pelo clique em um link, ou pela entrada da URL na barra de endereços, ou envio de formulário, ou inicializada através da operação de um script diferente que os usados por TYPE_RELOAD e TYPE_BACK_FORWARD como listado abaixo.
TYPE_RELOAD1Navegação através da operação de recarregamento ou pelo método location.reload().
TYPE_BACK_FORWARD2Navegação através de uma operação de histórico.
TYPE_UNDEFINED255Qualquer tipo de navegação não definida pelos valores acima.

window.performance.navigation.redirectCount indicará, se houver, quantos redirecionamentos aconteceram até que a página final seja alcançada.

A API Navigation Timing pode ser usada para colher dados da performance do lado do cliente enviado para um servidor via XHR tanto quanto os dados medidos que eram muito dificultosos de medir de outras maneiras como o tempo de “descarga” de uma página anterior, tempo de look up do dominio, tempo total do window.onload, etc.

Exemplos

Calculando o tempo total necessário para carregar uma página:

var perfData = window.performance.timing; 
var pageLoadTime = perfData.loadEventEnd - perfData.navigationStart;

Calculando os tempos de resposta da requisição:

var connectTime = perfData.responseEnd - perfData.requestStart;

Desktop

FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Suporte básico6.07 (7)915.08

Mobile

FeatureAndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Suporte básico4.015 (15)915.08

Artigo no MDN

Rev 1.0: 2015-07-27
Rev 2.0: 2015-11-21

Voltar