Comment utiliser ajax pour collecter le temps de réponse de toutes les demandes sur la page, j'espère obtenir une réponse détaillée, il est préférable de joindre le code, merci
Tout d'abord, pour cette situation, jquery et zepto ont déjà leurs propres méthodes d'implémentation https://github.com/madrobby/zepto/blob/master/src/ajax.js L'affiche peut le vérifier
.
Il y a plusieurs hooks dans le code source : ajaxStart, ajaxStop, ajaxBeforeSend, ajaxError, ajaxComplete L'auteur a soigneusement observé ces hooks. Ils représentent différents moments de l'exécution ajax, une méthode triggerGlobal sera appelée.
function triggerAndReturn(context, eventName, data) {
var event = $.Event(eventName)
$(context).trigger(event, data)
return !event.isDefaultPrevented()
}
// trigger an Ajax "global" event
function triggerGlobal(settings, context, eventName, data) {
if (settings.global) return triggerAndReturn(context || document, eventName, data)
}
最后所有ajax的请求的时间都会存放到data里面, 其中settingsLa fonction de cette méthode est d'enregistrer un événement personnalisé sur le document. Chaque fois que le hook est déclenché, s'il s'avère que l'événement correspondant a déjà été enregistré sur le document, l'état correspondant sera déclenché à ce moment-là. ce que nous devons faire est de lier l'événement avant d'envoyer l'ajax, d'ajouter un identifiant unique à chaque ajax, puis d'obtenir l'heure
.
rrreee
Enfin, l'heure de toutes les requêtes ajax sera stockée dans les données. Le champ settings est très critique. Il est essentiellement égal à l'objet transmis lorsque vous appelez $.ajax() (en fait, $. s'étend, mais lorsque l'événement est déclenché, les deux paramètres ne forment qu'un seul objet), donc des champs supplémentaires peuvent être montés dessus.
Il existe également d'autres méthodes, mais elles sont toutes similaires. Enregistrez l'heure lors de l'envoi de la demande, puis enregistrez l'heure lors de sa réception et tout ira bien.
Si l'affiche a utilisé de nouvelles bibliothèques ajax encapsulées telles que axiso, vous pouvez également utiliser des concepts tels que des intercepteurs pour implémenter cette fonction
🎜Cependant, peu importe à quel point l'emballage est exquis, l'essence est la même, c'est ce que j'ai dit ci-dessus. Enregistrez l'heure avant l'envoi, enregistrez à nouveau l'heure après avoir répondu et soustrayez les deux derniers🎜.
Le principe original est de surveiller les changements dans readyState. Chaque fois que readyState change, l'événement onreadystatechange sera déclenché. Le temps entre 1 et 4 est enregistré comme temps de réponse, puis la requête est renvoyée au serveur.
readyState stocke le statut de XMLHttpRequest. passe de 0 à 4. 0 : La demande n'est pas initialisée 1 : La connexion au serveur a été établie 2 : La demande a été reçue 3 : La demande est en cours de traitement 4 : La demande est terminée et la réponse est prête
Tout d'abord, pour cette situation, jquery et zepto ont déjà leurs propres méthodes d'implémentation https://github.com/madrobby/zepto/blob/master/src/ajax.js L'affiche peut le vérifier
.Il y a plusieurs hooks dans le code source :
ajaxStart
,ajaxStop
,ajaxBeforeSend
,ajaxError
,ajaxComplete
L'auteur a soigneusement observé ces hooks. Ils représentent différents moments de l'exécution ajax, une méthodetriggerGlobal
sera appelée.ajaxStart
,ajaxStop
,ajaxBeforeSend
,ajaxError
,ajaxComplete
楼主仔细观察这些钩子,他们代表了ajax执行的不同时刻,在这些函数中都会调用一个方法triggerGlobal
,这个方法就是关键这个方法的作用就是在于在document上面注册一个自定义事件,每当钩子触发的时候,如果发现之前有在document上面注册过相应的事件的时候则会触发相应的状态,此时我们需要做的是在发送ajax前绑定事件,为每一个ajax添加一个唯一标识符,然后获取时间就完成了.
rrreee最后所有ajax的请求的时间都会存放到data里面, 其中
. rrreeesettings
La fonction de cette méthode est d'enregistrer un événement personnalisé sur le document. Chaque fois que le hook est déclenché, s'il s'avère que l'événement correspondant a déjà été enregistré sur le document, l'état correspondant sera déclenché à ce moment-là. ce que nous devons faire est de lier l'événement avant d'envoyer l'ajax, d'ajouter un identifiant unique à chaque ajax, puis d'obtenir l'heureEnfin, l'heure de toutes les requêtes ajax sera stockée dans les données. Le champ
settings
est très critique. Il est essentiellement égal à l'objet transmis lorsque vous appelez $.ajax() (en fait, $. s'étend, mais lorsque l'événement est déclenché, les deux paramètres ne forment qu'un seul objet), donc des champs supplémentaires peuvent être montés dessus.Il existe également d'autres méthodes, mais elles sont toutes similaires. Enregistrez l'heure lors de l'envoi de la demande, puis enregistrez l'heure lors de sa réception et tout ira bien.
Si l'affiche a utilisé de nouvelles bibliothèques ajax encapsulées telles que axiso, vous pouvez également utiliser des concepts tels que des intercepteurs pour implémenter cette fonction
🎜Cependant, peu importe à quel point l'emballage est exquis, l'essence est la même, c'est ce que j'ai dit ci-dessus. Enregistrez l'heure avant l'envoi, enregistrez à nouveau l'heure après avoir répondu et soustrayez les deux derniers🎜.Le principe original est de surveiller les changements dans readyState. Chaque fois que readyState change, l'événement onreadystatechange sera déclenché. Le temps entre 1 et 4 est enregistré comme temps de réponse, puis la requête est renvoyée au serveur.
readyState stocke le statut de XMLHttpRequest. passe de 0 à 4.
0 : La demande n'est pas initialisée
1 : La connexion au serveur a été établie
2 : La demande a été reçue
3 : La demande est en cours de traitement
4 : La demande est terminée et la réponse est prête