2015-06-15 15 views
8

Manchmal (nicht jedes Mal, aber normalerweise), wenn ich lokal entwickle, nachdem Hunderte von JS-Dateien erfolgreich heruntergeladen wurden (sieht so aus, als ob wir derzeit 1393 Skripte ziehen), wechselt Chrome vom Download die Dateien parallel zum seriellen Download.Chrome wechselt zum seriellen Herunterladen von Skripts

Der Server ist Knoten, Express und das Modul "serve-static" verwenden. Ich verwende Chrome 43.0. Ich benutze den Knoten 0.12.2. Ich benutze serve-static 1.9.3. Die Dateien werden alle mit einem normalen Skript-Tag wie <script src="foobar.js"></script> angefordert. Ich vermute, dass dies ein Chrome-Problem ist, da sich die Serverantworten nicht ändern. Aber die Browseranforderungen ändern sich auch nicht, nur ihr Timing/ihre Reihenfolge.

Irgendwelche Ideen?

enter image description here enter image description here

Edit: Da dies sieht ein Chrome Problem, ich habe hier einen Bug-Report zu Chromium vorgelegt: https://code.google.com/p/chromium/issues/detail?can=2&q=serial%20script%20downloading&colspec=ID%20Pri%20M%20Week%20ReleaseBlock%20Cr%20Status%20Owner%20Summary%20OS%20Modified&id=500948&thanks=500948&ts=1434467876

+0

Und was würden Sie erwarten? Wenn man bedenkt, dass die HTTP-Spezifikation die Anzahl gleichzeitiger Client/Server-Verbindungen begrenzt ... –

+0

Und doch, wie genau schließt man diese Skripte ein? –

+0

@ c-smile HTTP-Spezifikation begrenzt die Anzahl der gleichzeitigen Verbindungen, aber sie ** sollten ** dann in Gruppen herunterladen, das heißt 6 Verbindungen geschlossen 6 neue mehr geöffnet (oder wiederverwendet) zum Beispiel. Einer nach dem anderen ist ein seltsames Thema. – devconcept

Antwort

1

Jeder Browser hat eine maximale Anzahl von gleichzeitigen Anfragen, die er gleichzeitig von jedem gegebenen Host ausführt, und stellt alle anderen Anfragen in eine Warteschlange. Die meisten Browser unterstützen 6 pro Hostname. Hier finden Sie weitere Details zu jedem Browser: http://www.browserscope.org/?category=network&v=top

1393 ist eine Menge von Skripten zum Herunterladen auf einer einzigen Seite. Möglicherweise müssen Sie die gesamte Projektarchitektur & Dateistruktur überprüfen, um diese Dateien zu minimieren, um den Stamm zu adressieren.

Sie können prüfen, wie Sie Ihre Javascript-Dateien in einer einzigen Datei oder Dateigruppe verkleinern oder komprimieren. Dies sollte auch dann geschehen, wenn Sie nur ein paar Javascript-Dateien zur Optimierung der Leistung haben.

Sie können auch CDNs (Content Delivery Network) verwenden, um einige oder alle Dateien zu hosten. Durch das Verteilen von Dateien über verschiedene Hostnamen (zB http://host1.com/file1.js und http://host2.com/file2.js) kann der Browser die maximalen gleichzeitigen Dateien von jedem Host zur gleichen Zeit herunterladen.

+0

Wegen der Anzahl der Skripte wird der Treppeneffekt erwartet, aber in dem Screenshot, der nach den ersten 6 gegeben wird, lädt er definitiv keine Skripte parallel; Alle anderen werden einzeln nacheinander verarbeitet. – Katana314

+0

In der Produktion concat und minify, das ist ein Problem, das ich in der Entwicklung vor Ort erfahre – hrdwdmrbl