Kosten der http-Anfrage vs. Dateigröße, Faustregel?

8

Diese Art von Frage wurde vor HTTP-Anfragen vs Dateigröße? gestellt, aber ich hoffe auf eine bessere antwort. In dieser verknüpften Frage schien der Beantworter die Frage mit der geschickten Formel von Latenz + Übertragungszeit mit einer geschätzten Latenz von 80 ms und einer Übertragungsgeschwindigkeit von 5 Mb / s ziemlich gut zu beantworten. Aber es scheint in mindestens einer Hinsicht ein Fehler zu sein. Erfolgen nicht mehrere Anfragen und Übertragungen gleichzeitig in einem normalen Browser-Erlebnis? So sieht es aus, wenn ich die Registerkarte "Netzwerk" in Chrome überprüfe. Bedeutet das nicht, dass die Anfrage-Latenz nicht so schlimm ist?

Gibt es noch andere Dinge zu beachten? Offensichtlich variieren Latenz und Bandbreite, aber 80ms und 5Mb / s sind eine gute Faustregel. Ich dachte an eine Analogie und ich frage mich, ob es richtig ist. Stellen Sie sich einen Bahnhof mit nur einem Gleis und einem Gleis vor (oder vielleicht eines für beide). HTTP-Anfragen sind wie das Senden einer Engine, um an einer anderen Station ein paar Autos zu holen. Sie kehren zurück und ziehen einen langen Zug von Eisenbahnwagen, der die angeforderte Datei darstellt, die heruntergeladen wird. Du könntest also einen Motor rausschicken und ihn massiv belasten lassen. Oder Sie könnten mehrere Triebwerke herausschicken und sie könnten jeweils kleinere Ladungen zurückbringen, natürlich müssten sie alle warten, bis sie wieder in die Station kommen. Und einige Motoren konnten nicht ausgesendet werden, bis andere reingekommen sind. Ist das eine fehlerhafte Analogie?

Ich denke, die große Frage ist dann, wie Sie vorhersagen können, wie viel Überlappung es in HTTP-Anfragen gibt, so dass Sie zum Beispiel wissen, ob es sich lohnt, zwei große PNG-Dateien auf Ihrer Seite zu haben oder stattdessen ein Webp-Image sowie die Webpjs js und swf-Dateien für inkompatible Browser. Das verdoppelt die Anzahl der Anfragen, aber mehr als die Hälfte der gesamten Dateigröße (sagen wir 200kB Einsparungen).

    
Moss 15.03.2014, 19:05
quelle

2 Antworten

2

Das ist die Art von Antwort, nach der ich suche. Ich habe einige simple Tests durchgeführt, um ein Gefühl für die Geschwindigkeit vieler kleiner Dateien gegenüber einer großen Datei zu bekommen.

Ich habe html-Seiten erstellt, die eine Menge Bilder in zufälliger Größe von placekitten.com geladen haben. Ich habe sie in Chrome geladen, wobei die Registerkarte "Netzwerk" geöffnet ist.

Hier sind einige Ergebnisse:

%Vor%

Eine wichtige Sache ist also, dass einzelne Dateien viel schneller werden, nachdem sie einmal geladen wurden. (Die Komma getrennte Liste von Zeiten sind Seiten neu geladen). Ich habe normal aktualisiert und auch leeren Cache und Hard Reload. Seltsamerweise schien es keinen großen Unterschied zu machen, auf welche Art ich mich erholte.

Meine Verbindung hatte eine Latenz- oder Rücklaufzeit von etwa 120 - 130 ms und meine Download-Geschwindigkeit variierte zwischen 4 und 8 Mbps. Chrome schien ungefähr 6 Anfragen gleichzeitig zu bearbeiten.

Wenn man sich diese paar Tests anschaut, scheint es, dass es in diesem Bereich von Dateigrößen zumindest besser ist, weniger Anfragen zu haben, wenn die Dateigrößen gleich sind, aber wenn man die Dateigröße halbiert, sogar bei der Aufwand für die Erhöhung der Anzahl der HTTP-Anfragen um 30, es wäre es wert, zumindest für eine frische Seite laden.

Alle Kommentare oder bessere Antworten wären willkommen.

    
Moss 24.03.2014, 21:57
quelle
5

Ihre Analogie ist nicht allgemein schlecht. Offensichtlich, wenn Sie in allen Aspekten wirklich präzise sein wollen, gibt es Dinge, die übermäßig vereinfacht oder falsch sind (aber das passiert bei fast allen Analogien).

Ihre Schätzung von 80ms und 5mb / s mag logisch klingen, aber obwohl die meisten von uns Theorie mögen, sollten Sie diese Art von Problemen auf andere Weise lösen.

Um gute Schätzungen zu erstellen sollten Sie messen , um einige Daten zu erhalten und sie zu analysieren. Jede Schätzung hängt von einigen Kontexten ab und Sie sollten sie nicht ignorieren .

Denken Sie darüber nach, nicht dieselbe geschätzte Latenz und Bandbreite für eine 3G-Verbindung, eine ADSL-Verbindung in Japan oder eine ADSL-Verbindung in einem weniger technisch entwickelten Land zu sein. Gehen Kunden vom anderen Ende der Welt oder im selben Land aus? Wie bei Ihrer guten Beobachtung von gleichzeitigen Verbindungen beim Kunden, gibt es Millionen von möglichen Fragen, die Sie sich stellen können, und sehr wenig gute Antworten, ohne etwas zu tun.

Ich weiß, dass ich nicht genau Ihre Frage beantworte, weil ich denke, dass es ohne so viele Details über die Domain (plus Constrains und ein riesiges usw.) nicht zu beantworten ist.

Sie scheinen einige Ideen zu haben, wie Sie Ihre Lösung entwerfen können. Mein bester Rat ist, jedes von diesen zu implementieren und sie zu profilieren. Machen Sie Messungen, versuchen Sie herauszufinden, was Ihre Engpässe sind, und sehen Sie, ob Sie etwas Kontrolle über sie haben.

In einigen Problemen kann diese Art von Fragen eine optimale Lösung sein, aber der Unterschied zwischen optimal und suboptimal könnte in der Praxis vernachlässigbar sein .     

jsign 23.03.2014 13:26
quelle