Ich habe eine Java-Webanwendung und frage mich, ob die Javascript-Dateien mit dem HTML-Body heruntergeladen wurden oder ob der HTML-Body zuerst geladen wird und der Browser dann alle JavaScript-Dateien anfordert.

Der Grund für diese Frage ist, dass ich wissen möchte, ob Dateien mit jQuery.getScript () importiert werden würde zu einer schlechteren Leistung führen. Ich möchte alle Dateien mit dieser JQuery-Funktion importieren, um Doppelarbeit bei JavaScript-Importen zu vermeiden.

0
Rafael Teles 12 Aug. 2015 im 15:38

4 Antworten

Beste Antwort

Der Hauptteil des HTML-Dokuments wird zuerst abgerufen. Nach dem Herunterladen überprüft der Browser, welche Ressourcen abgerufen werden müssen, und ruft diese ab.

Sie können dies tatsächlich sehen, wenn Sie die Chrome Dev Console öffnen, zur Registerkarte "Netzwerk" wechseln (stellen Sie sicher, dass das Caching deaktiviert ist und die Protokolle erhalten bleiben) und einfach eine Seite aktualisieren. Beispiel für das Laden von Körpern und Skripten

Dieser erste grüne Balken ist das Laden der Seite und der zweite Teil sind die Skripte, ein Stylesheet und einige Bildressourcen

1
d0nut 12 Aug. 2015 im 12:42

Das HTML-Dokument wird zuerst heruntergeladen. Erst wenn der Browser das HTML-Dokument heruntergeladen hat, kann er herausfinden, welche Skripte abgerufen werden sollen

Allerdings sollten schwere Skripte, die das Erscheinungsbild des HTML-Körpers nicht direkt beeinflussen, am Ende des Körpers und nicht im Kopf geladen werden, damit sie das Rendern nicht blockieren, es sei denn, dies ist erforderlich

0
andrrs 12 Aug. 2015 im 12:42

Das HTML-Dokument wird zuerst heruntergeladen oder zumindest zuerst heruntergeladen. Während der Analyse enthält jedes Skript, dass die gefundenen Browser heruntergeladen werden. Das bedeutet, dass einige Skripte möglicherweise vollständig geladen werden, bevor das Dokument vollständig geladen ist.

Während das Dokument heruntergeladen wird, analysiert der Browser es und zeigt so viel wie möglich an. Wenn das Parsen zu einem Skript-Include kommt, wird das Parsen gestoppt und der Browser setzt es aus, bis das Skript geladen und ausgeführt wurde. Anschließend wird das Parsen fortgesetzt. Das bedeutet, dass

Wenn Sie getScript anstelle eines Skript-Includes aufrufen, ändert sich das Verhalten. Die Methode stellt eine asynchrone Anforderung, sodass der Browser den Rest der Seite weiter analysiert, während das Skript geladen wird.

Dies hat einige wichtige Auswirkungen:

  • Das Parsen der Seite wird früher abgeschlossen.
  • Skripte werden nicht mehr in einer bestimmten Reihenfolge ausgeführt, sondern in der Reihenfolge, in der das Laden abgeschlossen ist.
  • Wenn ein Skript von einem anderen abhängig ist, müssen Sie selbst überprüfen, ob das erste Skript tatsächlich geladen wurde, bevor Sie es im anderen Skript verwenden.

Sie können eine Kombination aus Skript-Includes und getScript -Aufrufen verwenden, um den besten Effekt zu erzielen. Sie können reguläre Skript-Includes für Skripte verwenden, von denen andere Skripte abhängen, und getScript für Skripte, die von den Auswirkungen dieser Methode nicht betroffen sind.

0
Guffa 12 Aug. 2015 im 16:05

Ich frage mich, ob das Javascript während einer Anfrage mit dem HTML-Text heruntergeladen wird

Wenn es Teil dieses Körpers ist, dann ja. Wenn es sich in einer separaten Ressource befindet, dann nein.

Angenommen, Ihre HTML-Datei enthält Folgendes:

<script type="text/javascript">
    $(function () {
        // some code here
    });
</script>

Dieser Code, der Teil der HTML-Datei ist, ist in der HTML-Ressource enthalten. Der Webserver unterscheidet nicht zwischen der Art des Codes in der Datei, sondern dient nur als Antwort, unabhängig davon, was vorhanden ist.

Auf der anderen Seite, wenn Sie dies haben:

<script type="text/javascript" src="someFile.js"></script>

In diesem Fall befindet sich der Code nicht in derselben Datei. Der HTML-Code verweist lediglich auf eine separate Ressource (someFile.js), die den Code enthält. In diesem Fall würde der Browser eine separate Anfrage für diese Ressource stellen. Insgesamt zwei Anfragen.

0
David 12 Aug. 2015 im 12:43