tempo de carregamento da página com jQuery
-
06-07-2019 - |
Pergunta
Eu quero calcular o tempo de carregamento da página; Este meio de segunda 0 (trecho um pouco jQuery foi carregado) para o segundo x, quando toda a página é carregada.
Eu me pergunto se alguém teve uma experiência com ele, também idéias como implementá-lo corretamente será apperciated.
por favor, eu não preciso de uma extensão, eu já tenho firebug, eu preciso de uma solução js
graças:)
Solução
Como já foi mencionado, isso não vai ser muito preciso. Mas isso deve funcionar razoavelmente.
Em seu <head>
, ou seja, o mais cedo possível:
<script>
var startTime = (new Date()).getTime();
</script>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
<script>
$(window).load(function () {
var endTime = (new Date()).getTime();
var millisecondsLoading = endTime - startTime;
// Put millisecondsLoading in a hidden form field
// or Ajax it back to the server or whatever.
});
</script>
A chave é esse comportamento, dos docs jQuery :
Quando ligado ao elemento janela, o evento é acionado quando o usuário agente terminar o carregamento de todo o conteúdo dentro de um documento, incluindo janela, quadros, objetos e imagens.
Outras dicas
Uma vez que os scripts são executados assim que eles são analisados, eu sugiro que você coloque uma marca de script apenas dentro do cabeçalho, em seguida, o script para ligar o evento de carregamento da página depois de você ter carregado jQuery:
<html>
<head>
<script>
// Capture start time
</script>
...
<script src="jquery.js" />
<script>
$(window).load(function() {
// Capture end time
});
</script>
...
Dessa forma, você deve ser capaz de capturar o máximo de tempo de carregamento da página quanto possível.
Você pode ser melhor fora de usar um plugin para o navegador? Calculando com JavaScript será necessário tempo de carregamento da página subestimado, uma vez que não irá incluir o tempo para carregar o jQuery trecho, e não inclui o tempo entre o navegador enviar o pedido e o servidor de responder?
Há um carga horária Analyzer plugin para o Firefox.
Se você está fazendo isso com a finalidade de otimização, então sugiro que você usar Yslow . É uma extensão Firebug-Firefox. Pode mostrar-lhe o tempo de carregamento da página e um monte de outras informações úteis.
Leia a W3C recomendação para sincronismo Navigation
Notable:
Por exemplo, as seguintes mostras de script uma tentativa ingênua para medir a tempo que leva para carregar totalmente uma página:
<html>
<head>
<script type="text/javascript">
var start = new Date().getTime();
function onLoad() {
var now = new Date().getTime();
var latency = now - start;
alert("page loading time: " + latency);
}
</script>
</head>
<body onload="onLoad()">
<!- Main page body goes from here. -->
</body>
</html>
O script calcula o tempo que leva para carregar a página após a primeiro pedaço de JavaScript na cabeça é executado, mas não dá qualquer informação sobre o tempo que leva para obter a página do servidor.
Para atender à necessidade de informações completas sobre a experiência do usuário, este documento apresenta as interfaces PerformanceTiming. esta interface permite mecanismos JavaScript para fornecer latência do lado do cliente completa as medições dentro de aplicações. Com a interface proposta, o exemplo anterior pode ser modificado para medir página percebida de um usuário carga tempo.
O script a seguir calcula quanto tempo para carregar uma página desde o mais de navegação recente.
<html>
<head>
<script type="text/javascript">
function onLoad() {
var now = new Date().getTime();
var page_load_time = now - performance.timing.navigationStart;
alert("User-perceived page loading time: " + page_load_time);
}
</script>
</head>
<body onload="onLoad()">
<!- Main page body goes from here. -->
</body>
</html>
Você não pode realmente fazer isso com jQuery desde incêndios $(document).ready();
quando a página foi carregada.
Você pode fazer isso com a YSlow Firebug plug-in para Firfox. Se você quer este trabalho em todos os navegadores que você precisará adicionar código serverside para mostrar quanto tempo que levou quando o primeiro elemento é escrito para o elemento de fundo.
Se não é isso que você gostaria que você pode usar uma ferramenta como selênio e escrever um teste para capturar o tempo de open
ao fim de waitForPageToLoad
. obras de selênio em todos os navegadores