国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

Table des matières
Analyse approfondie des performances de chargement des pages Web: Explication détaillée de l'API de synchronisation de la navigation
Maison interface Web js tutoriel Page de profilage charge avec l'API de synchronisation de navigation

Page de profilage charge avec l'API de synchronisation de navigation

Feb 25, 2025 pm 06:04 PM

Analyse approfondie des performances de chargement des pages Web: Explication détaillée de l'API de synchronisation de la navigation

Profiling Page Loads with the Navigation Timing API

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

Début de l'API de synchronisation de navigation

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

Prise en charge du navigateur de détection

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. 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);

é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 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.

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 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:

  • Si l'utilisateur navigue vers la page en tapant une URL, en cliquant sur un lien, en soumettant un formulaire ou en utilisant des actions de script, la valeur de type est 0.
  • Si l'utilisateur recharge / actualise la page, type est égal à 1.
  • Si l'utilisateur navigue vers la page via l'historique (bouton arrière ou avant), type est égal à 2.
  • pour tout autre cas, 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);

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 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);
}

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

  • > L'objet 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.
  • L'API de synchronisation de navigation est intégrée au navigateur et fournit des mesures de synchronisation plus détaillées.
  • L'API suit également la fa?on dont les utilisateurs naviguent vers les pages.
  • Les données de synchronisation de navigation peuvent être envoyées au serveur pour analyse.

(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)

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!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefa?on, veuillez contacter admin@php.cn

Outils d'IA chauds

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

échangez les visages dans n'importe quelle vidéo sans effort grace à notre outil d'échange de visage AI entièrement gratuit?!

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

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

Sujets chauds

Tutoriel PHP
1502
276
Comment faire une demande HTTP dans Node.js? Comment faire une demande HTTP dans Node.js? Jul 13, 2025 am 02:18 AM

Il existe trois fa?ons courantes d'initier des demandes HTTP dans Node.js: utilisez des modules intégrés, Axios et Node-Fetch. 1. Utilisez le module HTTP / HTTPS intégré sans dépendances, ce qui convient aux scénarios de base, mais nécessite un traitement manuel de la couture des données et de la surveillance des erreurs, tels que l'utilisation de https.get () pour obtenir des données ou envoyer des demandes de post via .write (); 2.AXIOS est une bibliothèque tierce basée sur la promesse. Il a une syntaxe concise et des fonctions puissantes, prend en charge l'async / attendre, la conversion JSON automatique, l'intercepteur, etc. Il est recommandé de simplifier les opérations de demande asynchrones; 3.Node-Fetch fournit un style similaire à la récupération du navigateur, basé sur la promesse et la syntaxe simple

Types de données JavaScript: référence primitive vs Types de données JavaScript: référence primitive vs Jul 13, 2025 am 02:43 AM

Les types de données JavaScript sont divisés en types primitifs et types de référence. Les types primitifs incluent la cha?ne, le nombre, le booléen, le nul, un non défini et le symbole. Les valeurs sont immuables et les copies sont copiées lors de l'attribution des valeurs, de sorte qu'elles ne se affectent pas; Les types de référence tels que les objets, les tableaux et les fonctions stockent les adresses de mémoire, et les variables pointant vers le même objet s'afferchent mutuellement. Le typeof et l'instance de OFF peuvent être utilisés pour déterminer les types, mais prêtent attention aux problèmes historiques de typeofnull. Comprendre ces deux types de différences peut aider à écrire un code plus stable et fiable.

Objet JavaScript Time, quelqu'un construit un site Web Eactexe, plus rapide sur Google Chrome, etc. Objet JavaScript Time, quelqu'un construit un site Web Eactexe, plus rapide sur Google Chrome, etc. Jul 08, 2025 pm 02:27 PM

Bonjour, développeurs JavaScript! Bienvenue dans JavaScript News de cette semaine! Cette semaine, nous nous concentrerons sur: le différend de marque d'Oracle avec Deno, les nouveaux objets Time JavaScript sont pris en charge par les navigateurs, les mises à jour Google Chrome et certains outils de développeurs puissants. Commen?ons! Le différend de marque d'Oracle avec la tentative de Deno Oracle d'enregistrer une marque "JavaScript" a provoqué la controverse. Ryan Dahl, le créateur de Node.js et Deno, a déposé une pétition pour annuler la marque, et il pense que JavaScript est un niveau ouvert et ne devrait pas être utilisé par Oracle

Gestion des promesses: cha?nage, gestion des erreurs et combinateurs de promesses en javascript Gestion des promesses: cha?nage, gestion des erreurs et combinateurs de promesses en javascript Jul 08, 2025 am 02:40 AM

La promesse est le mécanisme central pour gérer les opérations asynchrones en JavaScript. Comprendre les appels de cha?ne, la gestion des erreurs et les combinants est la clé pour ma?triser leurs applications. 1. L'appel de la cha?ne renvoie une nouvelle promesse à travers. Puis () pour réaliser la concaténation des processus asynchrones. Chaque .then () re?oit le résultat précédent et peut renvoyer une valeur ou une promesse; 2. La gestion des erreurs doit utiliser .catch () pour attraper des exceptions pour éviter les défaillances silencieuses, et peut renvoyer la valeur par défaut dans Catch pour continuer le processus; 3. Combinateurs tels que promesse.all () (réussi avec succès uniquement après tout succès), promesse.race () (le premier achèvement est retourné) et promesse.allsetTled () (en attente de toutes les achèvements)

Qu'est-ce que l'API Cache et comment est-elle utilisée avec les travailleurs du service? Qu'est-ce que l'API Cache et comment est-elle utilisée avec les travailleurs du service? Jul 08, 2025 am 02:43 AM

Cacheapi est un outil fourni par le navigateur pour mettre en cache les demandes de réseau, qui est souvent utilisée en conjonction avec travailleur de service pour améliorer les performances du site Web et l'expérience hors ligne. 1. Il permet aux développeurs de stocker manuellement des ressources telles que des scripts, des feuilles de style, des photos, etc.; 2. Il peut faire correspondre les réponses du cache en fonction des demandes; 3. Il prend en charge la suppression des caches spécifiques ou la nettoyage du cache entier; 4. Il peut mettre en ?uvre des stratégies de priorité de cache ou de priorité de réseau grace à l'écoute des événements Fetch; 5. Il est souvent utilisé pour le support hors ligne, accélérez la vitesse d'accès répétée, préchargement des ressources clés et du contenu de mise à jour des antécédents; 6. Lorsque vous l'utilisez, vous devez faire attention au contr?le de la version du cache, aux restrictions de stockage et à la différence entre le mécanisme de mise en cache HTTP.

JS Roundup: une plongée profonde dans la boucle d'événement JavaScript JS Roundup: une plongée profonde dans la boucle d'événement JavaScript Jul 08, 2025 am 02:24 AM

La boucle d'événement de JavaScript gère les opérations asynchrones en coordonnant les piles d'appels, les webapis et les files d'attente de taches. 1. La pile d'appels exécute du code synchrone, et lors de la rencontre de taches asynchrones, il est remis à WebAPI pour le traitement; 2. Une fois que le WebAPI a terminé la tache en arrière-plan, il met le rappel dans la file d'attente correspondante (macro tache ou micro tache); 3. La boucle d'événement vérifie si la pile d'appels est vide. S'il est vide, le rappel est retiré de la file d'attente et poussé dans la pile d'appels pour l'exécution; 4. Micro taches (comme Promise. puis) ??prendre la priorité sur les taches macro (telles que Settimeout); 5. Comprendre la boucle d'événements permet d'éviter de bloquer le thread principal et d'optimiser l'ordre d'exécution du code.

Comprendre l'événement bouillonnant et capturer dans les événements JavaScript DOM Comprendre l'événement bouillonnant et capturer dans les événements JavaScript DOM Jul 08, 2025 am 02:36 AM

Les bulles d'événements se propagent de l'élément cible vers l'extérieur vers le n?ud d'ancêtre, tandis que la capture d'événements se propage de la couche externe vers l'intérieur vers l'élément cible. 1. événements Bubbles: Après avoir cliqué sur l'élément enfant, l'événement déclenche l'auditeur de l'élément parent vers le haut. Par exemple, après avoir cliqué sur le bouton, il sortira d'abord cliqué sur l'enfant, puis parent. 2. Capture d'événement: définissez le troisième paramètre sur true, afin que l'auditeur soit exécuté dans l'étape de capture, tels que le déclenchement de l'écouteur de capture de l'élément parent avant de cliquer sur le bouton. 3. Les utilisations pratiques incluent la gestion unifiée des événements d'éléments enfants, le prétraitement d'interception et l'optimisation des performances. 4. Le flux d'événements DOM est divisé en trois étapes: capture, cible et bulle, et l'écouteur par défaut est exécuté dans l'étape de la bulle.

Un tour d'horizon des fonctions d'ordre supérieur au-delà de la carte et du filtre Un tour d'horizon des fonctions d'ordre supérieur au-delà de la carte et du filtre Jul 10, 2025 am 11:41 AM

Dans les tableaux JavaScript, en plus de la carte et du filtre, il existe d'autres méthodes puissantes et rarement utilisées. 1. La réduction peut non seulement résumer, mais également compter, se regrouper, aplatir les tableaux et construire de nouvelles structures; 2. Find et FindIndex sont utilisés pour trouver des éléments ou des index individuels; 3.Il et tout sont utilisés pour déterminer si les conditions existent ou que toutes les personnes se rencontrent; 4.Sort peut être trié mais changera le tableau d'origine; 5. Faites attention à la copie du tableau lorsque vous l'utilisez pour éviter les effets secondaires. Ces méthodes rendent le code plus concis et efficace.

See all articles