suchen
HeimWeb-FrontendHTML-TutorialDer Prozess, mit dem Browser HTML laden und rendern (durch Standards definierter und für moderne Browser optimierter Prozess)

Werfen Sie zunächst einen Blick auf den durch den Standard definierten Browser-Rendering-Prozess (online zu finden):

Der Prozess, bei dem der Browser eine Webseite öffnet

  1. Der erste Wenn ein Benutzer eine Website besucht, sendet der Browser eine Anfrage an den Server und der Server gibt eine HTML-Datei zurück.

  2. Der Browser beginnt mit dem Laden des HTML-Codes und stellt fest, dass ein Link vorhanden ist Tag im Head-Tag, das auf eine externe CSS- oder JS-Datei verweist; 🎜>

  3. Der Browser lädt weiterhin den Textteil des HTML-Codes, CSS- und JS-Dateien wurden abgerufen, und Sie können mit dem Rendern der Seite beginnen;

    Der Browser hat im Code ein IMG-Tag gefunden, das auf ein Bild verweist, und hat eine Anfrage an den Server gestellt.

    Zu diesem Zeitpunkt wartet der Browser nicht, bis das Bild heruntergeladen wurde, sondern rendert weiterhin den folgenden Code
  4. Der Server gibt die Bilddatei zurück Das Bild nimmt einen bestimmten Bereich ein, die Auswirkungen Das Seitenlayout wird geändert, daher muss der Browser zurückgehen und diesen Teil des Codes neu rendern
  5. Der Browser findet ein Skript-Tag enthält eine Zeile Javascript-Code und führt diese schnell aus.

  6. Das Javascript-Skript führt diese Anweisung aus, die den Browser anweist, ein bestimmtes p im Code auszublenden (style.display=”none&rdquo ;). Ups, plötzlich fehlt so ein Element und der Browser muss diesen Teil des Codes neu rendern

  7. Als HTML schließlich ankommt, bricht der Browser in Tränen aus...

  8. Die Reihenfolge, in der Browser HTML laden und rendern

  9. Die Reihenfolge, in der der IE-Browser herunterlädt, ist von oben nach unten und die Reihenfolge, in der Es wird ebenfalls von oben gerendert. Anschließend werden das Herunterladen und das Rendern gleichzeitig durchgeführt.

Beim Rendern in einem bestimmten Teil der Seite wurden alle darüber liegenden Teile heruntergeladen

(dies bedeutet nicht, dass alle zugehörigen Elemente heruntergeladen wurden)
  1. Wenn Sie auf eine semantisch interpretierbare Tag-eingebettete Datei (JS-Skript, CSS-Stil) stoßen, aktiviert der IE-Downloadvorgang eine separate Verbindung zum Herunterladen.
  2. und analysieren Sie es nach dem Herunterladen Stoppen Sie während des Analysevorgangs das Herunterladen aller nach unten gerichteten Elemente der Seite und blockieren Sie das Laden

    .
  3. Nachdem das Stylesheet heruntergeladen wurde, wird es zusammen mit allen zuvor heruntergeladenen Stylesheets analysiert. Nach Abschluss der Analyse werden alle vorherigen Elemente (einschließlich derjenigen, die zuvor gerendert wurden) analysiert neu gerendert werden.
  4. Bei einer Neudefinition in JS oder CSS überschreibt die später definierte Funktion die zuvor definierte Funktion.

  5. JS wird geladen

  6. Kann nicht parallel heruntergeladen und analysiert werden (Download blockiert)

Der Webmodus ist synchron, um das Skript sofort zu analysieren und auszuführen, wenn ein Skript-Tag analysiert wird, und das Parsen des Dokuments zu blockieren, bis das Skript von außen zitiert wird Wenn JS in Anführungszeichen gesetzt ist, wartet der Browser auf die Rückgabe der Anforderung
    . Dieser Prozess ist ebenfalls synchron und blockiert die Analyse des Dokuments, bis die Ressource angefordert wird. Da der Browser eine stabile DOM-Baumstruktur benötigt und es sehr wahrscheinlich Code in JS gibt, der die DOM-Baumstruktur direkt ändert, z. B. die Verwendung von document.write oder appendChild oder sogar die direkte Verwendung von location.href zum Springen, springt der Browser Um dies zu verhindern, muss der DOM-Baum neu erstellt werden, wenn JS den DOM-Baum ändert, wodurch andere Downloads und Präsentationen blockiert werden. Dieses Muster wird seit vielen Jahren beibehalten und ist speziell in HTML4 und HTML5 spezifiziert. Entwickler können das Skript als „Verzögert“ markieren, damit es die Dokumentanalyse nicht blockiert und ausgeführt wird, nachdem die Dokumentanalyse abgeschlossen ist. Html5 fügt die Option hinzu, ein Skript als asynchron zu markieren, sodass die Parsing-Ausführung des Skripts einen anderen Thread verwendet.
  • Es gibt einige Punkte, die erklärt werden müssen:  1. Wir wissen, dass der Verarbeitungsprozess des Browsers das Parsen von HTML ist um einen DOM-Baum zu generieren->Render-Baum basierend auf DOM-Baum und Stylesheet generieren->Render-Render-Baum-Anzeige. Damit Benutzer die Seite schneller sehen können, generiert der Browser beim Parsen des HTML einen partiellen DOM-Baum, und der Browser generiert einen partiellen Render-Baum und zeigt ihn an.

 2. In diesem Prozess gibt es zwei externe Ressourcen, die die Skriptausführung und damit das Rendern blockieren, nämlich externes JS und externes CSS. Externes js blockiert die Generierung des DOM-Baums, da der Browser einen stabilen DOM-Baum benötigt und js diese Struktur möglicherweise zerstören kann (natürlich kann es auch den Stil ändern [beachten Sie, dass es sich um einen Stil handelt, nicht um einen Stil). sheet], aber dies blockiert nicht und hat keine Auswirkungen); externe CSS-Stylesheets blockieren auch die Ausführung des Skripts Theoretisch, da das Stylesheet den Dom-Baum nicht ändert Es besteht keine Notwendigkeit, das Dokument zu stoppen. Es liegt jedoch ein Problem vor. Das Skript fordert möglicherweise die Stilinformationen während des Analysevorgangs an wird den falschen Wert erhalten. Dies scheint ein Edge-Fall zu sein, ist aber wirklich üblich. Firefox blockiert alle Skripte, während ein Stylesheet geladen und analysiert wird, während Chrome Skripte nur blockiert, wenn sie versuchen, auf bestimmte Stileigenschaften zuzugreifen, die möglicherweise von einem entladenen Stylesheet betroffen sind.

 3. Andere andere externe Ressourcen blockieren das Rendern nicht, wie zum Beispiel Bilder. Wir können sehen, dass oft der allgemeine Rahmen der Seite angezeigt wird . Das heißt, die Position des Bildes wird nicht angezeigt und nach dem Herunterladen des Bildes neu gerendert.

Optimierung für moderne Browser:

Gemäß Standards Browser-Rendering- und Download-Prozess. Der folgende Code lädt externe Ressourcen in derselben Reihenfolge wie die Ressourcen in HTML. Eine externe Ressourcenanforderung http://hm.baidu.com/hm.js?a041a0f4ff93aef6aa83f34134331a1d sollte vor allen Stilen geladen werden

...百度统计代码-->
<script>var _hmt = _hmt || [];
    (function() {var host=document.location.hostname;if(/lcfarm.com$/ig.test(host)){          
    var hm = document.createElement("script");
          hm.src = "//hm.baidu.com/hm.js?a041a0f4ff93aef6aa83f34134331a1d";          
          var s = document.getElementsByTagName("script")[0]; 
          s.parentNode.insertBefore(hm, s);
        }
    })();script>
    <link rel="stylesheet"
     type="text/css" href="//static.lcfarm.com/pc-dist/pkg/index.html_aio_f9db6a6.css?1.1.2">
     <link rel="stylesheet" 
     type="text/css" href="//static.lcfarm.com/pc-dist/common/css/common_530eedd.css?1.1.2">
     <link rel="stylesheet" type="text/css" href="//static.lcfarm.com/pc-dist/css/index_8b620da.css?1.1.2">
     <link rel="stylesheet" 
     type="text/css" href="//static.lcfarm.com/pc-dist/pkg/index.html_aio_2_2379650.css?1.1.2">head>
     <body>...
     <script type="text/javascript" data-loader="" 
     src="//static.lcfarm.com/pc-dist/common/dep/mod_36ad799.js?1.1.2">script>
     <script type="text/javascript" data-loader="" 
     src="//static.lcfarm.com/pc-dist/common/dep/jquery_c07f226.js?1.1.2">script>
     <script type="text/javascript" 
     src="//static.lcfarm.com/pc-dist/common/js/jquery/jquery.cookie_546183c.js?1.1.2">script>
     <script type="text/javascript" src="//static.lcfarm.com/pc-dist/pkg/common_85ea494.js?1.1.2">script>
     <script type="text/javascript" 
     src="//static.lcfarm.com/pc-dist/pkg/index.html_aio_350303c.js?1.1.2">script>body>html></script>

 Aber eigentlich in Chrom. Der folgende Effekt wurde in Firefox, ie8 und anderen Browsern gefunden (getestet mit https://www.webpagetest.org/)

 

Warum? Dies ist Spekulatives Parsen

 Sowohl Webkit als auch Firefox haben diese Optimierung durchgeführt. Wenn das Skript ausgeführt wird, analysiert ein anderer Thread das verbleibende Dokument und lädt Ressourcen die später über das Netzwerk geladen werden müssen. Dieser Ansatz ermöglicht das parallele Laden von Ressourcen, wodurch die Gesamtgeschwindigkeit erhöht wird. Es ist zu beachten, dass das Pre-Parsing den Dom-Baum nicht verändert. Diese Arbeit wird dem Haupt-Parsing-Prozess überlassen, der nur Verweise auf externe Ressourcen wie externe Skripte, Stylesheets und Bilder analysiert.

Wie im Bild oben zu sehen ist, werden beim Ausführen des Skripts viele externe Ressourcenreferenzen analysiert und der Thread gestartet, um sie herunterzuladen. Der Hauptthread wartet immer noch auf die Rückkehr hm.js.


Das Obige ist der Inhalt des Prozesses des Ladens und Renderns von HTML durch den Browser (der Standarddefinitionsprozess und die Optimierung moderner Browser). Weitere verwandte Inhalte finden Sie hier Achten Sie auf die chinesische PHP-Website (www.php.cn)!


Stellungnahme
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Was sind Boolesche Attribute in HTML? Geben Sie einige Beispiele an.Was sind Boolesche Attribute in HTML? Geben Sie einige Beispiele an.Apr 25, 2025 am 12:01 AM

Boolesche Attribute sind spezielle Attribute in HTML, die ohne Wert aktiviert werden. 1. Das boolesche Attribut steuert das Verhalten des Elements dadurch, ob es existiert oder nicht, z. B. deaktiviert das Eingabefeld. 2. Das Arbeitsprinzip besteht darin, das Elementverhalten gemäß der Existenz von Attributen zu ändern, wenn sich der Browser analysiert. 3. Die grundlegende Verwendung besteht darin, Attribute direkt hinzuzufügen, und die erweiterte Verwendung kann über JavaScript dynamisch gesteuert werden. 4. Häufige Fehler denken fälschlicherweise, dass Werte festgelegt werden müssen, und die richtige Schreibmethode sollte präzise sein. 5. Die beste Praxis ist es, den Code präzise zu halten und boolesche Eigenschaften vernünftig zu verwenden, um die Leistung und Benutzererfahrung von Webseiten zu optimieren.

Wie können Sie Ihren HTML -Code validieren?Wie können Sie Ihren HTML -Code validieren?Apr 24, 2025 am 12:04 AM

HTML -Code kann mit Online -Validatoren, integrierten Tools und automatisierten Prozessen sauberer sein. 1) Verwenden Sie W3CmarkupValidationService, um den HTML -Code online zu überprüfen. 2) Installieren und konfigurieren Sie die HTMLHINT-Erweiterung in VisualStudioCode zur Echtzeitüberprüfung. 3) Verwenden Sie HTMLTIDY, um HTML -Dateien im Bauprozess automatisch zu überprüfen und zu reinigen.

HTML vs. CSS und JavaScript: Vergleich von WebtechnologienHTML vs. CSS und JavaScript: Vergleich von WebtechnologienApr 23, 2025 am 12:05 AM

HTML, CSS und JavaScript sind die Kerntechnologien zum Erstellen moderner Webseiten: 1. HTML Definiert die Webseitenstruktur, 2. CSS ist für das Erscheinen der Webseite verantwortlich.

HTML als Markup -Sprache: seine Funktion und ihren ZweckHTML als Markup -Sprache: seine Funktion und ihren ZweckApr 22, 2025 am 12:02 AM

Die Funktion von HTML besteht darin, die Struktur und den Inhalt einer Webseite zu definieren, und der Zweck besteht darin, eine standardisierte Möglichkeit zur Anzeige von Informationen bereitzustellen. 1) HTML organisiert verschiedene Teile der Webseite über Tags und Attribute wie Titel und Absätze. 2) Es unterstützt die Trennung von Inhalten und Leistung und verbessert die Wartungseffizienz. 3) HTML ist erweiterbar, sodass benutzerdefinierte Tags SEO verbessern können.

Die Zukunft von HTML, CSS und JavaScript: WebentwicklungstrendsDie Zukunft von HTML, CSS und JavaScript: WebentwicklungstrendsApr 19, 2025 am 12:02 AM

Die zukünftigen Trends von HTML sind Semantik und Webkomponenten, die zukünftigen Trends von CSS sind CSS-in-JS und CssShudini, und die zukünftigen Trends von JavaScript sind WebAssembly und serverlos. 1. HTML -Semantik verbessern die Zugänglichkeits- und SEO -Effekte sowie Webkomponenten die Entwicklungseffizienz, aber der Browserkompatibilität sollte die Aufmerksamkeit geschenkt werden. 2. CSS-in-JS verbessert die Flexibilität des Stilmanagements, kann jedoch die Dateigröße erhöhen. CssShudini ermöglicht den direkten Betrieb des CSS -Renderings. 3.Webassembly optimiert die Browser -Anwendungsleistung, verfügt jedoch über eine steile Lernkurve, und serverloses vereinfacht die Entwicklung, erfordert jedoch eine Optimierung von Kaltstartproblemen.

HTML: Die Struktur, CSS: Der Stil, JavaScript: Das VerhaltenHTML: Die Struktur, CSS: Der Stil, JavaScript: Das VerhaltenApr 18, 2025 am 12:09 AM

Die Rollen von HTML, CSS und JavaScript in der Webentwicklung sind: 1. HTML definiert die Webseitenstruktur, 2. CSS steuert den Webseitenstil, und 3. JavaScript fügt ein dynamisches Verhalten hinzu. Zusammen bauen sie den Rahmen, die Ästhetik und die Interaktivität moderner Websites auf.

Die Zukunft von HTML: Evolution und Trends im WebdesignDie Zukunft von HTML: Evolution und Trends im WebdesignApr 17, 2025 am 12:12 AM

Die Zukunft von HTML ist voller unendlicher Möglichkeiten. 1) Neue Funktionen und Standards umfassen mehr semantische Tags und die Beliebtheit von Webcomponenten. 2) Der Webdesign -Trend entwickelt sich weiterhin für reaktionsschnelles und zugängliches Design. 3) Die Leistungsoptimierung verbessert die Benutzererfahrung durch reaktionsschnelle Bildlade- und faulen Ladetechnologien.

HTML vs. CSS vs. JavaScript: Ein vergleichender ÜberblickHTML vs. CSS vs. JavaScript: Ein vergleichender ÜberblickApr 16, 2025 am 12:04 AM

Die Rollen von HTML, CSS und JavaScript in der Webentwicklung sind: HTML ist für die Inhaltsstruktur verantwortlich, CSS ist für den Stil verantwortlich und JavaScript ist für dynamisches Verhalten verantwortlich. 1. HTML definiert die Webseitenstruktur und den Inhalt durch Tags, um die Semantik zu gewährleisten. 2. CSS steuert den Webseitenstil über Selektoren und Attribute, um es schön und einfach zu lesen. 3. JavaScript steuert das Verhalten von Webseiten über Skripte, um dynamische und interaktive Funktionen zu erzielen.

See all articles

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

SublimeText3 Englische Version

SublimeText3 Englische Version

Empfohlen: Win-Version, unterstützt Code-Eingabeaufforderungen!

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

Leistungsstarke integrierte PHP-Entwicklungsumgebung

MinGW – Minimalistisches GNU für Windows

MinGW – Minimalistisches GNU für Windows

Dieses Projekt wird derzeit auf osdn.net/projects/mingw migriert. Sie können uns dort weiterhin folgen. MinGW: Eine native Windows-Portierung der GNU Compiler Collection (GCC), frei verteilbare Importbibliotheken und Header-Dateien zum Erstellen nativer Windows-Anwendungen, einschließlich Erweiterungen der MSVC-Laufzeit zur Unterstützung der C99-Funktionalität. Die gesamte MinGW-Software kann auf 64-Bit-Windows-Plattformen ausgeführt werden.

SAP NetWeaver Server-Adapter für Eclipse

SAP NetWeaver Server-Adapter für Eclipse

Integrieren Sie Eclipse mit dem SAP NetWeaver-Anwendungsserver.

Herunterladen der Mac-Version des Atom-Editors

Herunterladen der Mac-Version des Atom-Editors

Der beliebteste Open-Source-Editor