Angenommen, ich habe eine ziemlich umfangreiche JavaScript-Datei, die auf ungefähr 100 KB oder so gepackt ist. Mit Datei meine ich, dass es sich um eine externe Datei handelt, die über verknüpft <script src="...">
und nicht in den HTML-Code selbst eingefügt wird.
Wo kann man das am besten in den HTML-Code einfügen?
<html>
<head>
<!-- here? -->
<link rel="stylesheet" href="stylez.css" type="text/css" />
<!-- here? -->
</head>
<body>
<!-- here? -->
<p>All the page content ...</p>
<!-- or here? -->
</body>
</html>
Wird es einen funktionalen Unterschied zwischen den einzelnen Optionen geben?
javascript
html
optimization
nickf
quelle
quelle
Antworten:
Das Yahoo! Das Team von Exceptional Performance empfiehlt , Skripte am Ende Ihrer Seite zu platzieren, da Browser Komponenten herunterladen.
Natürlich ist Levis Kommentar "kurz bevor du ihn brauchst und nicht früher" wirklich die richtige Antwort, dh "es kommt darauf an".
quelle
$(function () {...})
als Ende der Seite ein oder muss er sich im Inneren befinden<head>
?</body>
?Der beste Ort dafür ist kurz bevor Sie es brauchen und nicht früher.
Abhängig vom physischen Standort Ihrer Benutzer kann die Verwendung eines Dienstes wie des S3-Dienstes von Amazon Benutzern helfen, ihn von einem Server herunterzuladen, der ihnen physisch näher liegt als Ihr Server.
Ist Ihr js-Skript eine häufig verwendete Bibliothek wie jQuery oder ein Prototyp? In diesem Fall gibt es eine Reihe von Unternehmen wie Google und Yahoo, die über Tools verfügen, mit denen Sie diese Dateien in einem verteilten Netzwerk bereitstellen können.
quelle
Als Faustregel gilt, dass der beste Ort zum Platzieren von
<script>
Tags das Ende der Seite unmittelbar vor dem</body>
Tag ist. Etwas wie das:Warum?
CSS
Ein bisschen abseits des Themas, aber ... Stylesheets ganz oben platzieren.
Weiterführende Literatur
Yahoo hat einen wirklich coolen Leitfaden veröffentlicht, der Best Practices zur Beschleunigung einer Website auflistet. Auf jeden Fall lesenswert: https://developer.yahoo.com/performance/rules.html
quelle
Mit 100k Javascript sollten Sie es niemals in die Datei einfügen. Verwenden Sie eine externe Skript-Javascript-Datei. Es gibt keine Chance in der Hölle, dass Sie diese Menge an Code immer nur in einer HTML-Seite verwenden. Wahrscheinlich fragen Sie, wo Sie die Javascript-Datei laden sollen, dafür haben Sie bereits zufriedenstellende Antworten erhalten.
Ich möchte jedoch darauf hinweisen, dass moderne Browser häufig gzip ped Javascript-Dateien akzeptieren ! Gzipen Sie einfach die
x.js
Datei aufx.js.gz
und zeigen Sie imsrc
Attribut darauf. Es funktioniert nicht auf dem lokalen Dateisystem. Sie benötigen einen Webserver, damit es funktioniert. Die Einsparungen bei den übertragenen Bytes können jedoch enorm sein.Ich habe es erfolgreich in Firefox 3, MSIE 7, Opera 9 und Google Chrome getestet. In Safari 3 funktioniert das anscheinend nicht so.
Weitere Informationen finden Sie in diesem Blog-Beitrag und auf einer anderen sehr alten Seite , die dennoch nützlich ist, da sie darauf hinweist, dass der Webserver erkennen kann, ob ein Browser komprimiertes Javascript akzeptiert oder nicht. Wenn Ihre Serverseite dynamisch wählen kann, ob der komprimierte oder der einfache Text gesendet werden soll, können Sie die Seite in allen Webbrowsern verwenden.
quelle
Das Javascript oben zu platzieren scheint ordentlicher zu sein, aber funktionell ist es besser, nach dem HTML zu streben. Auf diese Weise wird Ihr Javascript nicht ausgeführt und versucht, auf HTML-Elemente zu verweisen, bevor diese geladen werden. Diese Art von Problem tritt häufig erst auf, wenn Sie die Seite über eine tatsächliche Internetverbindung laden, insbesondere über eine langsame.
Sie können auch versuchen, das Javascript dynamisch zu laden, indem Sie ein Header-Element aus anderem Javascript-Code hinzufügen. Dies ist jedoch nur dann sinnvoll, wenn Sie nicht ständig den gesamten Code verwenden.
quelle
Mit cuzillion können Sie die Auswirkungen der unterschiedlichen Platzierung von Skript-Tags auf die Seitenlast mit verschiedenen Methoden testen: Inline, Extern, "HTML-Tags", "document.write", "JS DOM-Element", "iframe" und "XHR eval". . In der Hilfe finden Sie eine Erklärung der Unterschiede. Es kann auch Stylesheets, Bilder und Iframes testen.
quelle
Die Antwort hängt davon ab, wie Sie die Objekte von Javascript verwenden. Wie bereits erwähnt, verbessert das Laden der Javascript-Dateien in der Fußzeile und nicht in der Kopfzeile die Leistung. Es sollte jedoch darauf geachtet werden, dass die verwendeten Objekte später initialisiert werden als in der Fußzeile. Eine weitere Möglichkeit besteht darin, die 'js'-Dateien in einen Ordner zu laden, der allen Dateien zur Verfügung steht.
quelle
Wie andere gesagt haben, sollte es höchstwahrscheinlich in eine externe Datei gehen. Ich bevorzuge es, solche Dateien am Ende des <head /> einzufügen. Diese Methode ist menschlicher als maschinenfreundlich, aber auf diese Weise weiß ich immer, wo sich der JS befindet. Es ist einfach nicht so lesbar, Skriptdateien irgendwo anders einzuschließen (imho).
Wenn Sie wirklich jede letzte ms herausdrücken müssen, sollten Sie wahrscheinlich das tun, was Yahoo sagt.
quelle
Die Skripte sollten am Ende des Body-Tags eingefügt werden, da auf diese Weise der HTML-Code vom Browser analysiert und angezeigt wird, bevor die Skripte geladen werden.
quelle
Die Antwort auf die Frage hängt davon ab. In dieser Situation gibt es zwei Szenarien, und Sie müssen eine Auswahl treffen, die auf Ihrem geeigneten Szenario basiert.
Szenario 1 - Kritisches Skript / Muss benötigtes Skript
Wenn das von Ihnen verwendete Skript zum Laden der Website wichtig ist, wird empfohlen, es oben in Ihrem HTML-Dokument zu platzieren
<head>
. Einige Beispiele sind: Anwendungscode, Bootstrap, Schriftarten usw.Szenario 2 - Weniger wichtige / Analyseskripte
Es werden auch Skripte verwendet, die die Ansicht der Website nicht beeinflussen. Es wird empfohlen, solche Skripte zu laden, nachdem alle wichtigen Segmente geladen wurden. Und die Antwort darauf ist das Ende des Dokuments, dh das Ende Ihres Dokuments
<body>
vor dem schließenden Tag. Einige Beispiele sind: Google Analytics, Hotjar usw.Bonus - asynchron / aufschieben
Sie können den Browsern auch mitteilen, dass das Laden des Skripts gleichzeitig mit anderen ausgeführt werden kann und basierend auf der Auswahl des Browsers mithilfe eines Defer / Async-Arguments im Skriptcode geladen werden kann.
z.B.
<script async src="script.js"></script>
quelle
Ihre Javascript-Links können sich entweder im Kopf oder am Ende des Body-Tags befinden. Es ist richtig, dass sich die Leistung verbessert, indem Sie den Link am Ende Ihres Body-Tags platzieren. Wenn die Leistung jedoch kein Problem darstellt, ist es besser, sie im Kopf zu platzieren Damit die Leute lesen können und Sie wissen, wo sich die Links befinden, können Sie sie leichter referenzieren.
quelle
Ich würde sagen, dass es von der Tatsache abhängt, was Sie mit Javascript-Code erreichen wollen:
quelle
document.write
, was Sie wahrscheinlich nicht sein sollten.