2009-08-06 8 views
0

Je voudrais mesurer le temps nécessaire pour exécuter la totalité de la portée $(). Ready() dans chaque page.jQuery profilage - mesure complète onReady runtime

Pour le profilage de fonctions spécifiques, il suffit de définir une nouvelle variable Date() au début de la partie concernée, puis de vérifier le temps nécessaire pour atteindre la fin de la partie concernée. Le problème avec la mesure de toute l'étendue $(). Ready est qu'il peut parfois exécuter une partie du code de manière asynchrone et ensuite je ne peux pas attendre que tout se termine et voir combien de temps cela a pris.

Y a-t-il un événement qui est déclenché une fois que la page a complètement terminé tous les $(). Code prêt?

EDIT: L'utilisation de Firebug ou d'autres débogueurs clients ne sont pas une option puisque je dois aussi recueillir ces informations de profilage des utilisateurs du site Web pour le suivi et la représentation graphique notre chargement de page de site Web accélère

Merci!

Répondre

1

Il n'y aura aucun cas tiré parce que son quasi impossible prêt() pour savoir quand les fonctions asynchrones sont effectuées de traitement. Ainsi, vous devrez faire cette fonctionnalité en vous-même. vous pouvez utiliser les événements personnalisés de jQuery, ou peut-être définir une fonction à exécuter sur setInterval() qui peut introspecter l'environnement et en déduire si tout le reste est fait.

0

Avez-vous essayé d'utiliser Profiler dans Firebug?

+0

Je dois également collecter des statistiques auprès des utilisateurs afin de pouvoir surveiller les vitesses de chargement des pages. –

1

Remplacez la fonction jQuery ready par une fonction qui effectue le suivi du début et de la fin et appelle la méthode d'origine.

jQuery.ready = (function() { 
    var original = jQuery.ready; 
    return function() { 
     alert('starting profiler'); 
     original(); 
     alert('ending profiler'); 
    }; 
})(); 

$(function() { 
    alert('this message will appear between the profiler messages above...'); 
}); 
+0

N'oubliez pas d'appeler l'original avec les mêmes arguments. – SolutionYogi

+0

J'ai modifié votre code pour passer non seulement les arguments d'origine mais aussi la portée d'origine. – SolutionYogi

+0

Pourquoi? La fonction ready ne prend aucun argument. Cela aurait peut-être été une bonne idée si c'était une solution générale, mais elle était entièrement codée en pensant à la méthode de jQuery. Mai aussi bien le changer pour gonfler la valeur de retour de la méthode prête .... oh, attendez, il ne retourne rien ... –