Der Kontext: Meine Frage bezieht sich auf die Verbesserung der Leistung beim Laden von Webseiten, und insbesondere der Effekt, den Javascript beim Laden der Seite hat (Ressourcen/Elemente unterhalb des Skripts sind vom Herunterladen/Rendern blockiert).Herunterladen von JavaScript ohne Blockierung
Dieses Problem wird normalerweise vermieden/abgeschwächt, indem die Skripte ganz unten platziert werden (z. B. kurz vor dem Tag).
Der Code, den ich betrachte, ist für Webanalyse. Wenn Sie es unten platzieren, verringert sich die Genauigkeit. und weil dieses Skript keinen Einfluss auf den Inhalt der Seite hat, dh es wird kein Teil der Seite neu geschrieben - ich möchte es in den Kopf verschieben. Wie man das macht, ohne die Seitenlade-Leistung zu ruinieren, ist die Crux.
Aus meiner Forschung, ich habe sechs Techniken (w/Unterstützung bei allen oder den meisten gängigen Browsern) gefunden Skripte zum Download, so dass sie nach unten Seite nicht Inhalt von Laden/Rendering blockieren:
(i) XHR + Eval();
(ii) XHR + injizieren;
(iii) Laden Sie das HTML-Wrapped-Skript wie in iFrame herunter;
(iv) Einstellung der async Flagge Script-Tag auf TRUE (HTML 5 nur);
(v) Einstellung der des Skript-Tags defer Attribut; und
(vi) 'Skript-DOM-Element'.
Es ist der letzte von diesen ich verstehe nicht. Das JavaScript zu implementieren, das Muster (vi) ist:
(function() {
var q1 = document.createElement('script');
q1.src = 'http://www.my_site.com/q1.js'
document.documentElement.firstChild.appendChild(q1)
})();
scheint einfach: und anonyme Funktion erstellt wird, dann in dem gleichen Block ausgeführt. Innerhalb dieser anonymen Funktion:
ein Skriptelement
sein src Element erstellt wird, auf seine Lage, dann
das Skript Element auf das DOM
hinzugefügt wird
Aber während jede Zeile klar ist, ist es mir immer noch nicht klar wie exac Dieses Muster ermöglicht das Laden von Skripten, ohne die Elemente/Ressourcen der Down-Page vom Rendern/Laden zu blockieren?
+1: Ich bin nicht die Antwort, aber danke für diesen Strom von Wissen. Platzieren Sie das einfache Skript (das, in dem Sie den Code zeigen) im HEAD-Abschnitt oder am Anfang des BODY-Abschnitts unmittelbar nach dem OPEN-Tag
? –was ich * tun möchte ist * dieses Skript an der Unterseite des Kopfes, kurz vor '. Da es sich bei dem Skript um einen Seitenaufruf-Tracker handelt, liefert diese Positionierung (im Vergleich zum unteren Rand des Körpers) genauere Ergebnisse. Natürlich hat dies Auswirkungen auf die Leistung, daher meine Q. W/r/t-Platzierung kurz vor ' oder kurz nach
Ich nehme an, das ist die gleiche Leistung, obwohl für CMS-Zwecke scheint es ein wenig sauberer zu einfügen/zu aktualisieren Skripte im Kopf - und das könnte sogar spezifisch für das CMS sein. – doug