Analyse approfondie des performances de chargement des pages Web: Explication détaillée de l'API de synchronisation de la navigation
Points de base
- L'API de synchronisation de navigation fournit des informations de synchronisation détaillées lors du chargement des pages Web, y compris la recherche DNS, l'établissement de connexion TCP, la redirection de la page, le temps de construction DOM et d'autres indicateurs. Il est intégré au navigateur et n'a pas de frais généraux supplémentaires.
- Actuellement, l'API de synchronisation de navigation ne prend en charge que Internet Explorer 9, Firefox et Chrome. Par conséquent, le support du navigateur doit être détecté avant d'utiliser l'API. L'API est définie dans l'objet
window.performance.timing
.
L'API - enregistre les horodatages de nombreux événements marquants pendant le processus de chargement de la page, chaque événement est stocké comme une propriété de l'objet
window.performance.timing
. Si un événement ne se produit pas, sa valeur est nulle. L'API définit également une interface qui détermine comment les utilisateurs accèdent à des pages spécifiques. - L'API de synchronisation de navigation peut être utilisée en conjonction avec les appels AJAX pour rapporter les données utilisateur réelles sur le serveur. Cela permet aux développeurs de comprendre comment la page se comporte dans un environnement réel. Ces données peuvent également être utilisées pour créer des graphiques visuels pour le processus de chargement de la page.
La vitesse de chargement de la page Web est l'un des facteurs clés qui affectent l'expérience utilisateur. Les vitesses de chargement lente peuvent frustrer les utilisateurs et le barattage. Cependant, le dépannage des causes du chargement lent n'est généralement pas facile, car de nombreux facteurs affectent le temps de chargement global, tel que le navigateur de l'utilisateur, les conditions du réseau, la charge du serveur et le code d'application, etc. Heureusement, l'API de synchronisation de navigation peut facilement nous aider à résoudre ce problème.
Dans le passé, les développeurs avaient un accès très limité aux données collectées dans ces domaines. De nombreux développeurs utilisent depuis longtemps les objets Date
de JavaScript pour collecter des données de performance. Par exemple, le code suivant mesure le temps de chargement en comparant l'horodatage après l'appel du gestionnaire d'événements de chargement de page:
var start = new Date(); window.addEventListener("load", function() { var elapsed = (new Date()).getTime() - start.getTime(); }, false);
Il y a plusieurs problèmes avec cette méthode: Premièrement, la précision du temps de JavaScript n'est pas notoirement élevée; Le temps d'exécution après l'exécution dans le navigateur ne peut pas fournir de données sur le processus de chargement de page tels que le serveur, le réseau, etc. Date
Date
Pour fournir des données de chargement de page plus précises et complètes, W3C a proposé l'API de synchronisation de navigation. Cette API fournit des informations de synchronisation plus détaillées lors du chargement des pages. Contrairement aux objets
, l'API de synchronisation de navigation fournit des données de mesure liées à la recherche DNS, à l'établissement de connexion TCP, à la redirection de page, au temps de construction DOM et à diverses autres mesures. Le synchronisation de la navigation est également intégré au navigateur, ce qui signifie qu'aucune frais générale supplémentaire n'est engagée.
Date
Actuellement, l'API de synchronisation de navigation ne prend en charge que Internet Explorer 9, Firefox et Chrome. Par conséquent, le support du navigateur doit être détecté avant d'utiliser l'API. L'API est définie dans l'objet Événements enregistrés L'API enregistre les horodatages de nombreux événements marquants lors du chargement de la page. Chaque événement est stocké comme un attribut de l'objet Type de navigation L'API de synchronisation de navigation définit également une interface pour déterminer comment les utilisateurs accèdent à des pages spécifiques. L'objet Interprétation des données L'API de synchronisation de navigation peut être utilisée pour calculer certains composants du temps de chargement des pages. Par exemple, le temps nécessaire pour effectuer une recherche DNS peut être calculé en soustrayant L'API de synchronisation de navigation peut être utilisée en conjonction avec les appels AJAX pour rapporter les données utilisateur réelles sur le serveur. Ceci est utile car il permet aux développeurs de comprendre comment la page se comporte dans un environnement réel. Ces données peuvent également être utilisées pour créer des graphiques visuels pour le processus de chargement de la page. En fait, Google Analytics a inclus des données de synchronisation de navigation dans ses rapports. Points clés pour se souvenir (La section FAQ sur l'API de synchronisation de navigation peut être ajoutée ici, et le contenu peut être extrait et réécrit du document d'origine selon les besoins) window.performance.timing
. Les fonctions suivantes détectent si l'API est prise en charge: var start = new Date();
window.addEventListener("load", function() {
var elapsed = (new Date()).getTime() - start.getTime();
}, false);
window.performance.timing
. La liste suivante décrit chaque événement. Si un événement ne se produit pas (comme la redirection de page), sa valeur est nulle. (Remarque: Mozilla affirme que ces événements se produisent dans cet ordre.)
navigationStart
: Le temps après la fin du navigateur termine l'invite pour désinstaller le document précédent. S'il n'y a pas de document précédent, navigationStart
est égal à fetchStart
. C'est le début du temps de chargement de la page que l'utilisateur perçoit. fetchStart
: Le moment avant que le navigateur ne commence à chercher des URL. Le processus de recherche consiste à vérifier le cache d'application ou à demander des fichiers au serveur s'il n'est pas mis en cache. domainLookupStart
: Le moment avant le navigateur commence à rechercher les DN URL. Si la recherche DNS n'est pas requise, la valeur est la même que fetchStart
. domainLookupEnd
: l'heure instantanée une fois la recherche DNS terminée. Si la recherche DNS n'est pas requise, la valeur est la même que fetchStart
. connectStart
: Le moment où le navigateur se connecte au serveur. Si l'URL est mise en cache ou la ressource locale, la valeur est égale à domainLookupEnd
. connectEnd
: l'heure instantanée après avoir établi une connexion avec le serveur. Si l'URL est mise en cache ou la ressource locale, la valeur est la même que domainLookupEnd
. secureConnectionStart
: Si vous utilisez le protocole HTTPS, secureConnectionStart
définit l'heure instère avant le début de la poignée de main sécurisée. Si le navigateur ne prend pas en charge HTTPS, cette valeur doit être undefined
. requestStart
: L'heure instantanée avant que le navigateur n'envoie la demande d'URL. API UNDEFINED requestEnd
Valeur. redirectStart
: L'heure de début de l'URL va-t-elle qui initie la redirection. redirectEnd
: S'il existe des redirections, redirectEnd
représente le temps après le dernier octet de la dernière réponse de redirection reçue. responseStart
: L'heure instantanée après que le navigateur a reçu le premier octet de la réponse. responseEnd
: L'heure instantanée après que le navigateur reçoive le dernier octet de la réponse. unloadEventStart
: L'heure instantanée avant l'événement unload
du document précédent a été déclenchée. Cette valeur est nulle s'il n'y a pas de document précédent ou si le document précédent provient d'une source différente. unloadEventEnd
: L'heure instantanée après l'événement unload
du document précédent est déclenchée. Cette valeur est nulle s'il n'y a pas de document précédent ou si le document précédent provient d'une source différente. S'il y a une redirection vers une source différente, unloadEventStart
et unloadEventEnd
sont nuls. domLoading
: document.readyState
L'heure instantanée avant que la valeur ne soit définie sur le "chargement". domInteractive
: document.readyState
L'heure instantanée avant que la valeur ne soit définie sur "Interactive". domContentLoadedEventStart
: L'heure instantanée avant l'événement téléchargé DomContent est déclenchée. domContentLoadedEventEnd
: L'heure instantanée après le déclenchement de l'événement téléchargé DomContent est déclenchée.domComplete
: document.readyState
L'heure instantanée avant que la valeur ne soit définie sur "complète". loadEventStart
: L'heure instantanée avant l'événement de chargement de la fenêtre est déclenchée. Si l'événement n'a pas été licencié, la valeur est nulle. loadEventEnd
: L'heure instantanée après le déclenchement de l'événement de charge de la fenêtre. Si l'événement n'a pas été licencié ou est toujours en cours d'exécution, la valeur est nulle. window.performance
contient également un objet navigation
qui contient deux propriétés - type
et redirectCount
. La propriété type
> fournit un moyen à l'utilisateur de naviguer vers la page actuelle. La liste suivante décrit les valeurs enregistrées par type
:
type
est 0. type
est égal à 1. type
est égal à 2. type
équivaut à 255. redirectCount
Les propriétés contiennent le nombre de redirectes qui ont été navigués vers la page actuelle. Si aucune redirection ne se produit, ou si des redirectes proviennent d'une source différente, redirectCount
est nul. L'exemple suivant montre comment accéder aux données de navigation: var start = new Date();
window.addEventListener("load", function() {
var elapsed = (new Date()).getTime() - start.getTime();
}, false);
timing.domainLookupEnd
de timing.domainLookupStart
. L'exemple suivant calcule plusieurs mesures utiles. "USIME" correspond au délai de chargement de la page totale de l'expérience utilisateur. Les variables "DNS" et "Connexion" représentent le temps nécessaire pour effectuer des recherches DNS et se connecter respectivement au serveur. "RequestTime" stocke le temps total envoyé au serveur et a reçu la réponse. Enfin, "FetchTime" stocke le temps total pour terminer l'acquisition de documents (y compris l'accès à n'importe quel cache, etc.). Notez que la fonction setTimeout()
est appelée dans le gestionnaire d'événements de charge de fenêtre. Cela garantit que les données de synchronisation de navigation sont utilisées uniquement au moment où l'événement de chargement est terminé. Si les données de synchronisation sont accessibles à partir du gestionnaire d'événements de charge, la valeur de timing.loadEventEnd
sera nulle. function supportsNavigationTiming() {
return !!(window.performance && window.performance.timing);
}
Date
de JavaScript ne peut pas mesurer avec précision les données de chargement de page car elle ne connaît pas la demande avant d'exécuter dans le navigateur.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

INTRODUCTION Je sais que vous pouvez le trouver étrange, que doit faire exactement JavaScript, C et Browser? Ils semblent sans rapport, mais en fait, ils jouent un rôle très important dans le développement Web moderne. Aujourd'hui, nous discuterons du lien étroit entre ces trois. Grâce à cet article, vous apprendrez comment JavaScript fonctionne dans le navigateur, le rôle de C dans le moteur du navigateur et comment ils fonctionnent ensemble pour stimuler le rendu et l'interaction des pages Web. Nous connaissons tous la relation entre JavaScript et Browser. JavaScript est la langue principale du développement frontal. Il fonctionne directement dans le navigateur, rendant les pages Web vives et intéressantes. Vous êtes-vous déjà demandé pourquoi javascr

Node.js excelle dans des E / S efficaces, en grande partie grâce aux flux. Streams traite les données progressivement, en évitant la surcharge de mémoire - idéal pour les fichiers volumineux, les tâches réseau et les applications en temps réel. Combiner les flux avec la sécurité de type dactylographié crée un powe

Les différences de performance et d'efficacité entre Python et JavaScript se reflètent principalement dans: 1) comme un langage interprété, Python fonctionne lentement mais a une efficacité de développement élevée et convient au développement rapide des prototypes; 2) JavaScript est limité au thread unique dans le navigateur, mais les E / S multi-threading et asynchrones peuvent être utilisées pour améliorer les performances dans Node.js, et les deux ont des avantages dans les projets réels.

JavaScript est originaire de 1995 et a été créé par Brandon Ike, et a réalisé que la langue en langue C. 1.C offre des capacités de programmation élevées et au niveau du système pour JavaScript. 2. La gestion de la mémoire de JavaScript et l'optimisation des performances reposent sur le langage C. 3. La fonctionnalité multiplateforme du langage C aide JavaScript à s'exécuter efficacement sur différents systèmes d'exploitation.

JavaScript s'exécute dans les navigateurs et les environnements Node.js et s'appuie sur le moteur JavaScript pour analyser et exécuter du code. 1) Générer une arborescence de syntaxe abstraite (AST) au stade d'analyse; 2) Convertir AST en bytecode ou code machine à l'étape de compilation; 3) Exécutez le code compilé à l'étape d'exécution.

Les tendances futures de Python et JavaScript incluent: 1. Python consolidera sa position dans les domaines de l'informatique scientifique et de l'IA, 2. JavaScript favorisera le développement de la technologie Web, 3. Le développement de plate-forme multiplié deviendra un sujet brûlant, et 4. L'optimisation des performances sera le focus. Les deux continueront d'étendre les scénarios d'application dans leurs champs respectifs et de faire plus de percées dans les performances.

Les choix de Python et JavaScript dans les environnements de développement sont importants. 1) L'environnement de développement de Python comprend Pycharm, Jupyternotebook et Anaconda, qui conviennent à la science des données et au prototypage rapide. 2) L'environnement de développement de JavaScript comprend Node.js, VScode et WebPack, qui conviennent au développement frontal et back-end. Le choix des bons outils en fonction des besoins du projet peut améliorer l'efficacité du développement et le taux de réussite du projet.

Oui, le noyau du moteur de JavaScript est écrit en C. 1) Le langage C fournit des performances efficaces et un contrôle sous-jacent, qui convient au développement du moteur JavaScript. 2) Prendre le moteur V8 comme exemple, son noyau est écrit en C, combinant l'efficacité et les caractéristiques orientées objet de C. 3) Le principe de travail du moteur JavaScript comprend l'analyse, la compilation et l'exécution, et le langage C joue un rôle clé dans ces processus.


Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Dreamweaver CS6
Outils de développement Web visuel

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

Télécharger la version Mac de l'éditeur Atom
L'éditeur open source le plus populaire

VSCode Windows 64 bits Télécharger
Un éditeur IDE gratuit et puissant lancé par Microsoft
