Heim >Web-Frontend >js-Tutorial >Nicht blockierende Lösung zur Optimierung der Ladeleistung in JavaScript_Javascript-Kenntnissen
Die Leistung von Javascript im Browser kann als das wichtigste Usability-Problem angesehen werden, mit dem Frontend-Entwickler konfrontiert sind.
Eine der Yslow-23-Regeln von Yahoo besteht darin, JS ganz unten zu platzieren. Der Grund dafür ist, dass die meisten Browser tatsächlich einen einzigen Prozess verwenden, um mehrere Aufgaben wie die Benutzeroberfläche und die Aktualisierung von Javascript zu erledigen, und jeweils nur eine Aufgabe ausgeführt werden kann. Wie lange das Javascript ausgeführt wird und wie lange es dann wartet, bis der Browser inaktiv wird, um auf Benutzerinteraktionen zu reagieren.
Grundsätzlich bedeutet dies, dass das Vorhandensein des <script>-Tags dazu führt, dass die gesamte Seite darauf wartet, dass das Skript analysiert und ausgeführt wird. Unabhängig davon, ob der eigentliche JavaScript-Code inline ist oder in einer unabhängigen externen Datei enthalten ist, muss der Seiten-Download- und Parsing-Prozess angehalten und gewartet werden, bis das Skript diese Verarbeitung abgeschlossen hat, bevor fortgefahren werden kann. Dies ist ein wesentlicher Teil des Seitenlebenszyklus, da Skripte den Seiteninhalt während der Ausführung ändern können. Ein typisches Beispiel ist die Funktion document.write(), zum Beispiel: <br>
</p>
<div class="codetitle">
<span><a style="CURSOR: pointer" data="5199" class="copybut" id="copybut5199" onclick="doCopy('code5199')"><u>Code kopieren</u></a></span> Der Code lautet wie folgt:</div>
<div class="codebody" id="code5199">
<br>
<html><br>
<Kopf><br>
<title>Skriptbeispiel</title><br>
</head>
<br>
<body><br>
<p><br>
<script type="text/javascript"><br>
document.write("Das Datum ist " (new Date()).toDateString());<br>
</p><br>
</body>
</html><br>
<br><br>
Wenn der Browser auf ein <script>-Tag stößt, wie in der HTML-Seite oben, gibt es keine Möglichkeit vorherzusagen, ob JavaScript Inhalte in das <p>-Tag einfügt. Daher stoppt der Browser, führt diesen JavaScript-Code aus und fährt dann mit dem Parsen und Übersetzen der Seite fort. Das Gleiche passiert, wenn JavaScript mithilfe des src-Attributs geladen wird. Der Browser muss zunächst den Code für die externe Datei herunterladen, was einige Zeit in Anspruch nimmt, und dann den Code analysieren und ausführen. Während dieses Vorgangs werden das Parsen der Seite und die Benutzerinteraktion vollständig blockiert. <br>
</div>Da Skripte den Downloadvorgang anderer Seitenressourcen blockieren, empfiehlt es sich, alle <script>-Tags so nah wie möglich am Ende des <body>-Tags zu platzieren, um die Auswirkungen auf den Download der gesamten Seite zu minimieren Seite. Zum Beispiel: <br>
<p><br></p>
<div class="codetitle">Code kopieren<span><a style="CURSOR: pointer" data="96913" class="copybut" id="copybut96913" onclick="doCopy('code96913')"><u> Der Code lautet wie folgt:</u></a></span>
<html></div>
<Kopf><div class="codebody" id="code96913">
<title>Skriptbeispiel</title><br>
<link rel="stylesheet" type="text/css" href="styles.css" <br>
</head><br>
<br>
<body><br>
<p>Hallo Welt!</p><br>
<-- Beispiel für die empfohlene Skriptpositionierung -->
<script type="text/javascript" src="file1.js"></script>