Maison interface Web js tutoriel Une brève analyse des compétences de chargement asynchrone JavaScript_javascript

Une brève analyse des compétences de chargement asynchrone JavaScript_javascript

May 16, 2016 pm 04:24 PM
javascript 异步加载

Avant-propos

Je pense que vous avez rencontré de nombreux problèmes avec le chargement du script JavaScript. Principalement en quelques points——

1> Problèmes de chargement, de dépendance des fichiers et d'ordre d'exécution causés par les scripts synchrones et les scripts asynchrones
2> Problèmes d'optimisation des performances causés par les scripts synchrones et les scripts asynchrones


Une compréhension approfondie de tous les aspects liés au chargement des scripts aidera non seulement à résoudre des problèmes pratiques, mais aidera également à comprendre et à mettre en œuvre l'optimisation des performances.

Regardez d'abord n'importe quel code de balise de script——


Copier le code Le code est le suivant :



S'il est placé au-dessus de , il bloquera tout travail de rendu de page, laissant l'utilisateur dans un état « écran blanc de la mort » jusqu'à ce que le script soit chargé et exécuté. Le script à la fin de permettra uniquement aux utilisateurs de voir une page statique sans vie. L'endroit où le rendu côté client doit être effectué est parsemé de contrôles inefficaces et de cases vides. Obtenez un cas de test -

Copier le code Le code est le suivant :





Script de chargement asynchrone



Je suis le contenu




Parmi eux, le contenu de test.js——


Copier le code Le code est le suivant :

alert('Je suis le code du script dans la tête. Après avoir exécuté le js ici, le rendu du contenu du corps va démarrer !');


Nous verrons que l’alerte est un point de pause, et à ce moment, la page est blanche. Mais veuillez noter que la page entière a été chargée à ce moment-là. Si le corps contient des balises avec certains attributs src (comme la balise img ci-dessus), le navigateur a déjà commencé à charger le contenu associé. En bref, veuillez noter que le timing de fonctionnement du moteur js et du moteur de rendu s'excluent mutuellement (certains livres l'appellent le thread UI).

Par conséquent, nous avons besoin que les scripts chargés de rendre la page plus belle et plus facile à utiliser doivent être chargés immédiatement, tandis que les scripts qui peuvent être chargés plus tard doivent être chargés plus tard.

1. Exécution retardée du script

Il est de plus en plus courant de placer des scripts à la fin de la balise De cette manière, d'une part, les utilisateurs peuvent voir la page plus rapidement et, d'autre part, les scripts peuvent opérer directement sur les éléments DOM chargés. Pour la plupart des scripts, ce « déplacement » constitue une énorme amélioration. Le modèle de page est le suivant——


Copier le code Le code est le suivant :












Cela accélère considérablement le temps de rendu de la page, mais sachez que cela peut donner à l'utilisateur la possibilité d'interagir avec la page avant que le bodyScript ne soit chargé. La raison en est que le navigateur ne peut pas charger ces scripts tant que le document entier n'a pas été chargé, ce qui peut constituer un goulot d'étranglement pour les documents volumineux envoyés via des connexions lentes.

Idéalement, le chargement du script devrait se produire simultanément au chargement du document et ne pas affecter le rendu du DOM. De cette façon, vous pouvez exécuter le script une fois que le document est prêt car les scripts ont déjà été chargés dans l'ordre des balises <script> </p> <p></p> <p>Nous pouvons utiliser le report pour remplir cette exigence, c'est-à-dire - </p> <p><br> </p> <div class="codetitle"> <span><a style="CURSOR: pointer" data="92200" class="copybut" id="copybut92200" onclick="doCopy('code92200')"><u>Copier le code</u></a></span> Le code est le suivant :</div> <div class="codebody" id="code92200"> <br> <script src="deferredScript.js"></script>


Ajouter l'attribut defer équivaut à dire au navigateur : Veuillez commencer à charger ce script maintenant, mais veuillez attendre que le document soit prêt et que tous les scripts précédents avec l'attribut defer aient fini de s'exécuter avant de l'exécuter.

De cette façon, placer le script delay dans la balise head apportera tous les avantages de placer le script dans la balise body, et cela augmentera également considérablement la vitesse de chargement des documents volumineux. Le mode page en ce moment est——


Copier le code Le code est le suivant :












Mais tous les navigateurs ne prennent pas en charge le defer (pour certains navigateurs modernes, si defer est déclaré, leurs scripts internes n'effectueront pas les opérations de rendu document.write et DOM. IE4 prend tous en charge l'attribut defer). Cela signifie que si vous voulez vous assurer que votre script retardé peut s'exécuter après le chargement du document, vous devez encapsuler tout le code du script retardé dans une structure telle que $(document).ready de jQuery. Cela en vaut la peine, car près de 97 % de vos visiteurs bénéficient des avantages du chargement parallèle, tandis que les 3 % restants ont toujours accès à du JavaScript entièrement fonctionnel.

2. Parallélisation complète des scripts

Accélérer le chargement et l'exécution des scripts. Je ne veux pas attendre que les scripts différés s'exécutent les uns après les autres (le report nous rappelle un scénario de file d'attente ordonnée consistant à attendre tranquillement que le document se charge), ni Je veux attendre que le document soit prêt avant d'exécuter ces scripts, je veux charger le plus rapidement possible et exécuter ces scripts le plus rapidement possible. L’attribut async du HTML5 vient ici à l’esprit, mais sachez qu’il s’agit d’une anarchie chaotique.

Par exemple, nous chargeons deux scripts tiers totalement indépendants, la page fonctionne très bien sans eux, et nous ne nous soucions pas de savoir lequel s'exécute en premier et lequel s'exécute en dernier. Par conséquent, utiliser l’attribut async sur ces scripts tiers équivaut à améliorer leur vitesse d’exécution sans dépenser un centime.

L'attribut async est nouveau dans HTML5. La fonction est similaire à defer, qui permet le rendu DOM lors du téléchargement du script. Cependant, il sera exécuté dès que possible après le téléchargement (c'est-à-dire que le moteur JS sera exécuté dès qu'il sera inactif), et il n'y a aucune garantie que le script sera exécuté dans l'ordre. Ils se termineront avant l’événement onload.

Firefox 3.6, Opera 10.5, IE 9 et les derniers Chrome et Safari prennent tous en charge l'attribut async. Vous pouvez utiliser async et defer en même temps, de sorte que tous les IE après IE 4 prennent en charge le chargement asynchrone, mais sachez que async écrasera le defer.

Ensuite, le modèle de page à ce moment est le suivant——

Copier le code Le code est le suivant :














Faites attention à l'ordre d'exécution ici - chaque fichier de script est chargé, puis headScript.js est exécuté, puis defferedScript.js est chargé en arrière-plan pendant le rendu du DOM. Puis à la fin du rendu DOM, defferedScript.js et les deux scripts asynchrones seront exécutés. Il est à noter que pour les navigateurs prenant en charge l'attribut async, ces deux scripts s'exécuteront dans le désordre.

3. Chargement de script programmable

Bien que les fonctions des deux attributs de script ci-dessus soient très attrayantes, elles ne sont pas largement utilisées en raison de problèmes de compatibilité. Par conséquent, nous utilisons plus souvent des scripts pour charger d’autres scripts. Par exemple, nous souhaitons uniquement charger un script pour les utilisateurs qui remplissent certaines conditions, ce que l'on appelle souvent "chargement paresseux".

Au niveau de l'API du navigateur, il existe deux manières raisonnables de récupérer et d'exécuter des scripts de serveur -

1> Générer une requête ajax et utiliser la fonction eval pour traiter la réponse

2> Insérer la balise

Outils d'IA chauds

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.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

Repo: Comment relancer ses coéquipiers
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD

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)

Exposition des exceptions Ajax et une liste de moyens de résoudre les erreurs Exposition des exceptions Ajax et une liste de moyens de résoudre les erreurs Jan 30, 2024 am 08:33 AM

Une anomalie Ajax révélée, la façon de traiter diverses erreurs nécessite des exemples de code spécifiques. En 2019, le développement front-end est devenu une position importante qui ne peut être ignorée dans l'industrie Internet. En tant que l'une des technologies les plus couramment utilisées dans le développement front-end, Ajax peut réaliser un chargement de page et une interaction de données asynchrones, et son importance va de soi. Cependant, diverses erreurs et exceptions sont souvent rencontrées lors de l'utilisation de la technologie Ajax. Comment gérer ces erreurs est un problème auquel tout développeur front-end doit être confronté. 1. Erreurs réseau Lorsque vous utilisez Ajax pour envoyer des requêtes, l'erreur la plus courante est

Gérer efficacement les situations dans lesquelles jQuery .val() ne fonctionne pas Gérer efficacement les situations dans lesquelles jQuery .val() ne fonctionne pas Feb 20, 2024 pm 09:36 PM

Titre : Méthodes et exemples de code pour résoudre le problème selon lequel jQuery.val() ne fonctionne pas. Dans le développement front-end, jQuery est souvent utilisé pour faire fonctionner des éléments de page. Parmi elles, obtenir ou définir la valeur d’un élément de formulaire est l’une des opérations courantes. Habituellement, nous utilisons la méthode .val() de jQuery pour opérer sur les valeurs des éléments de formulaire. Cependant, vous rencontrez parfois des situations dans lesquelles jQuery.val() ne fonctionne pas, ce qui peut entraîner des problèmes. Cet article explique comment gérer efficacement jQuery.val (

Tutoriel JavaScript simple : Comment obtenir le code d'état HTTP Tutoriel JavaScript simple : Comment obtenir le code d'état HTTP Jan 05, 2024 pm 06:08 PM

Tutoriel JavaScript : Comment obtenir le code d'état HTTP, des exemples de code spécifiques sont requis Préface : Dans le développement Web, l'interaction des données avec le serveur est souvent impliquée. Lors de la communication avec le serveur, nous devons souvent obtenir le code d'état HTTP renvoyé pour déterminer si l'opération a réussi et effectuer le traitement correspondant en fonction de différents codes d'état. Cet article vous apprendra comment utiliser JavaScript pour obtenir des codes d'état HTTP et fournira quelques exemples de codes pratiques. Utilisation de XMLHttpRequest

Comment lire le HTML Comment lire le HTML Apr 05, 2024 am 08:36 AM

Bien que le HTML lui-même ne puisse pas lire les fichiers, la lecture des fichiers peut être réalisée via les méthodes suivantes : en utilisant JavaScript (XMLHttpRequest, fetch()) ; en utilisant des langages côté serveur (PHP, Node.js) en utilisant des bibliothèques tierces (jQuery. get() , axios, fs-extra).

Comment obtenir facilement le code d'état HTTP en JavaScript Comment obtenir facilement le code d'état HTTP en JavaScript Jan 05, 2024 pm 01:37 PM

Introduction à la méthode d'obtention du code d'état HTTP en JavaScript : Dans le développement front-end, nous devons souvent gérer l'interaction avec l'interface back-end, et le code d'état HTTP en est une partie très importante. Comprendre et obtenir les codes d'état HTTP nous aide à mieux gérer les données renvoyées par l'interface. Cet article explique comment utiliser JavaScript pour obtenir des codes d'état HTTP et fournit des exemples de code spécifiques. 1. Qu'est-ce que le code d'état HTTP ? Le code d'état HTTP signifie que lorsque le navigateur lance une requête au serveur, le service

c# Qu'est-ce que la délégation et quel problème résout-elle ? c# Qu'est-ce que la délégation et quel problème résout-elle ? Apr 04, 2024 pm 12:42 PM

La délégation est un type de référence de type sécurisé utilisé pour transmettre des pointeurs de méthode entre des objets afin de résoudre des problèmes de programmation asynchrone et de gestion d'événements : Programmation asynchrone : la délégation permet d'exécuter des méthodes dans différents threads ou processus, améliorant ainsi la réactivité de l'application. Gestion des événements : les délégués simplifient la gestion des événements, permettant de créer et de gérer des événements tels que des clics ou des mouvements de souris.

Comment empêcher la redirection de page dans WordPress ? Comment empêcher la redirection de page dans WordPress ? Mar 05, 2024 am 09:33 AM

Comment empêcher la redirection de page dans WordPress ? Dans le développement de sites Web, nous souhaitons parfois implémenter un paramètre de non-saut de page dans WordPress, c'est-à-dire que lors de certaines opérations, le contenu de la page peut être mis à jour sans actualiser la page entière. Cela améliore l’expérience utilisateur et rend le site Web plus fluide. Ensuite, nous partagerons comment implémenter le paramètre de non-saut de page dans WordPress et fournirons des exemples de code spécifiques. Tout d’abord, nous pouvons utiliser Ajax pour empêcher la page de sauter. Ajax

Comment résoudre les erreurs javascript Comment résoudre les erreurs javascript Apr 01, 2024 pm 05:39 PM

Les types et solutions courants incluent : Erreurs de grammaire : parcourez attentivement votre code, à la recherche de fautes de frappe, de ponctuation manquante ou de structures grammaticales incorrectes. Erreurs de référence : vérifiez que la variable ou la fonction a été déclarée et assurez-vous qu'elle est correctement orthographiée. Erreur de type : vérifiez le type de la variable et utilisez la fonction de conversion de type pour effectuer une conversion de type si nécessaire. Erreur de plage : assurez-vous que les arguments transmis à la fonction se situent dans la plage autorisée. Erreurs URI : vérifiez que les paramètres transmis aux fonctions du gestionnaire d'URI sont des composants URI valides et utilisent les fonctions d'encodage et de décodage correctes.

See all articles