Unsere Website geladen hat eine asynchron geladen application.js:application.js Skript blockiert in „Warteschlangen“ Zustand, bis Bilder
<script async="async" src="//...application-123456.js"></script>
Zusätzlich haben wir eine Menge von Dritten Skripte haben, dass (1) asynchron geladen werden und (2) wiederum ein asynchrones <script>
-Tag erzeugen, an dem ein größeres Skript aufgerufen wird.
Um nur ein Beispiel zu nennen, ist eines dieser Skripte von Drittanbietern Google's gpt.js (Sie können schnell einen Blick darauf werfen, wie es funktioniert).
Unser Problem ist, dass, während alle Drittanbieter-Skripte asynchron wie erwartet geladen werden, die Anwendung.js Stapel in "Warteschlangen" Status für mehr als 4 Sekunden bekommt.
Ich habe versucht, das Skript zu ändern, und es wie die Dritte diejenigen laden machen: Erstellen Sie eine <script>
Element, setzen Sie das „src“ -Attribut und laden Sie es:
<script async>
(function() {
var elem = document.createElement('script');
elem.src = 'http://...application-123456.js';
elem.async = true;
elem.type = 'text/javascript';
var scpt = document.getElementsByTagName('script')[0];
scpt.parentNode.insertBefore(elem, scpt);
})();
</script>
aber nichts geändert.
Dann studierte ich die Netzwerk-Kaskade in einer Seite unserer Website, die fast keine Bilder enthält, und ich sah, dass die Wartezeit fast Null war. Ich habe das gleiche Experiment auf Seiten mit unterschiedlichen Bildmengen versucht und festgestellt, dass die Wartezeit in Seiten mit mehr Bildern proportional zunimmt.
Ich lese diese in Chrome's network cascade documentation:
Wartezeit: Der Antrag der Rendering-Engine wurde verschoben, weil sie eine niedrigere Priorität als kritische Ressourcen (wie scripts/Stile) betrachtet wird. Dies passiert oft mit Bildern.
Ist es möglich, dass der Browser aus irgendeinem Grund unsere application.js
als "niedrigere Priorität" markiert? Ich habe im Internet gesucht und es scheint, dass niemand Probleme mit der Wartezeit hatte. Hat jemand eine Idee?
Vielen Dank.
Vielen Dank @Gideon, dieser Artikel war sehr interessant und erklärte, wie das Vorladen funktionieren soll. Allerdings ist mein Problem immer noch da: Ich habe ein ' –
Ich habe einen Weg gefunden, damit es wie erwartet funktioniert: Ich habe die '